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
#########################################



  Можно прописать запрет, добавив ключ для игнорирования запрета
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



    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