Кубернетес кубе-контроллер-менеджер. Как я могу применить флаг? - PullRequest
1 голос
/ 20 марта 2020

В документации я обнаружил, что для решения моей проблемы на kube-controller-manager должен быть применен следующий флаг:

--horizontal-pod-autoscaler-use-rest-clients=1m0s

Но как я могу применить этот флаг на * 1007? *? Я не понимаю, так как это не настройка на основе YAML, и единственное, что у меня есть на локальном компьютере, это kubectl & oc инструменты CLI.

1 Ответ

3 голосов
/ 20 марта 2020

kube-controller-manager работает в вашей плоскости управления K8s. Таким образом, вам нужно будет добавить этот флаг на серверах, где работает ваша плоскость управления. Как правило, это неравномерное количество серверов (один из которых является главным) 3 или 5 из-за того, что это рекомендуемый кворум. ( Пример использования kubeadm ).

Так что обычно kube-controller-manager конфиги живут под /etc/kubernetes/manifests в ваших мастерах. Имя файла обычно kube-controller-manager.yaml, и содержимое может быть изменено на что-то вроде этого:

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    component: kube-controller-manager
    tier: control-plane
  name: kube-controller-manager
  namespace: kube-system
spec:
  containers:
  - command:
    - kube-controller-manager
    - --authentication-kubeconfig=/etc/kubernetes/controller-manager.conf
    - --authorization-kubeconfig=/etc/kubernetes/controller-manager.conf
    - --bind-address=127.0.0.1
    - --client-ca-file=/var/lib/minikube/certs/ca.crt
    - --cluster-signing-cert-file=/var/lib/minikube/certs/ca.crt
    - --cluster-signing-key-file=/var/lib/minikube/certs/ca.key
    - --controllers=*,bootstrapsigner,tokencleaner
    - --kubeconfig=/etc/kubernetes/controller-manager.conf
    - --leader-elect=true
    - --requestheader-client-ca-file=/var/lib/minikube/certs/front-proxy-ca.crt
    - --root-ca-file=/var/lib/minikube/certs/ca.crt
    - --service-account-private-key-file=/var/lib/minikube/certs/sa.key
    - --use-service-account-credentials=true
    - --horizontal-pod-autoscaler-use-rest-clients=1m0s  <== add this line
    image: k8s.gcr.io/kube-controller-manager:v1.16.2
    imagePullPolicy: IfNotPresent
    livenessProbe:
      failureThreshold: 8
      httpGet:
        host: 127.0.0.1
        path: /healthz
        port: 10252
        scheme: HTTP
      initialDelaySeconds: 15
      timeoutSeconds: 15
    name: kube-controller-manager
    resources:
      requests:
        cpu: 200m
    volumeMounts:
    - mountPath: /etc/ssl/certs
      name: ca-certs
      readOnly: true
    - mountPath: /var/lib/minikube/certs
      name: k8s-certs
      readOnly: true
    - mountPath: /etc/kubernetes/controller-manager.conf
      name: kubeconfig
      readOnly: true
    - mountPath: /usr/share/ca-certificates
      name: usr-share-ca-certificates
      readOnly: true
  hostNetwork: true
  priorityClassName: system-cluster-critical
  volumes:
  - hostPath:
      path: /etc/ssl/certs
      type: DirectoryOrCreate
    name: ca-certs
  - hostPath:
      path: /var/lib/minikube/certs
      type: DirectoryOrCreate
    name: k8s-certs
  - hostPath:
      path: /etc/kubernetes/controller-manager.conf
      type: FileOrCreate
    name: kubeconfig
  - hostPath:
      path: /usr/share/ca-certificates
      type: DirectoryOrCreate
    name: usr-share-ca-certificates
status: {}

Затем вам нужно перезапустить kube-controller-manager.

Это может варьироваться в зависимости от на что ты бежишь в своих хозяевах. Если что-то типа docker вы можете сделать sudo systemctl restart docker или вам может потребоваться перезапустить containerd, если вы используете его вместо docker systemctl restart containerd

Или если вы хотите просто запустить kube-controller-manager, вы можно сделать docker restart kube-controller-mamnager или crictl stop kube-controller-manager; crictl start kube-controller-manager

...