kubectl create deploy qqqq --image=mginx:latest --replicas=2
# label/selector будут сгенерены автоматически: app=deployname
# selector деплоймент'а обязан соответствовать label под'а
# к селектору автоматически добавляется проверка на совпадение
# авто-метки pod-template-hash
kubectl apply -f qqqq.yaml
kubectl get deploy,po -o wide --show-labels
# если pod'у подменить обе метки: селекторную и pod-template-hash
# pod "заедет" в деплоймент, и лишний pod будет удален
#### qqqq.yaml #####################################
apiVersion: apps/v1
kind: Deployment
metadata:
name: qqqq
spec:
replicas: 2
selector:
matchLabels:
app: qqqq
template:
metadata:
labels:
app: qqqq
spec:
containers:
- image: nginx:latest
name: nginx
#########################################
Taints - запрет запуска подов на ноде
Можно прописать запрет, добавив ключ для игнорирования запрета
PreferNoSchedule # запускать нежелательно
NoSchedule # нельзя запускать
NoExecute # нельзя запускать, убить запущенные
# установить запрет
kubectl taint node stationX node-role.kubernetes.io/control-plain:NoSchedule
# посмотреть запреты для ноды
kubectl get node station2.example.com -o yaml | egrep -A3
taints:
- effect: NoSchedule
key: node-role.kubernetes.io/control-plain
# снять запрет (- в конце)
kubectl taint node stationX node-role.kubernetes.io/control-plain:NoSchedule-
# Чтобы под игнорировал запрет, добавить в манифест pod_toleration_example.yaml
# tolerationSeconds - сколько времени игнорировать
spec
tolerations
- key: "node.kubernetes.io/network-unavailable"
operator: "Exists"
effect: "NoExecute"
tolerationSeconds: 300
Context для доступа к kubernetes master
Config для доступа задается:
1. kubectl --kubeconfig=configfile ...
2. KUBECONFIG=configfile[:file_path21:file_path31:file_path41:...]
3. ~/.kube/config
4. http://localhost:8080 # если остальные варианты не заданы
Управление конфигами
kubectl config view # просмотр конфигов
# склеивание нескольких конфигов в один файл
KUBECONFIG=~/.kube/config:~/kubeconfig2 kubectl config view --flatten > newconf
# создание конфига с нуля
kubectl config set-cluster prod \
--server=https://api.prod.example.com --certificate-authority=$(base64 -i prodCA.crt)
kubectl config set-credentials admin \
--client-certificate=client.crt --client-key=client.key
User "admin" set.
# создание контекста prod_admin (контекст = api-url+user + namespace )
kubectl config set-context prod_admin --cluster=prod --user=admin --namespace=kube-system
# назначение дефолтного namespace для контекста
kubectl config set-context --current --namespace=namespace
# пример создания пользовательского контекста s1 с правами на namespace s1
[master]# kubectl create namespace s1
[master]# kubectl create -f http://server1/limitRange.yaml -n s1
[master]# kubectl create -f http://server1/resourceQuota.yaml -n s1
[master]# kubectl create rolebinding s1-admin --clusterrole=admin --user=s1 -n s1
rolebinding.rbac.authorization.k8s.io/s1-admin created
[master]# kubeadm alpha kubeconfig user --config=kubeadm-config.yaml --client-name=s1 --org=gurus > s1.kubeconfig
[master]# kubectl --kubeconfig=s1.kubeconfig config set-context --namespace=s1 --current
# kubectl config get-contexts
# kubectl config set-context kubernetes-admin@kubernetes --namespace=kube-system
# kubectl config get-contexts
Популярность: 18, Last-modified: Wed, 04 Feb 2026 22:26:23 GmT