Налаштування компонентів за допомогою kubeadm API

Ця сторінка охоплює способи налаштування компонентів, які розгортаються за допомогою kubeadm. Для компонентів панелі управління можна використовувати прапорці у структурі ClusterConfiguration або патчі на рівні вузла. Для kubelet і kube-proxy ви можете використовувати KubeletConfiguration та KubeProxyConfiguration, відповідно.

Всі ці опції можливі за допомогою конфігураційного API kubeadm. Докладніше про кожне поле в конфігурації ви можете дізнатися на наших довідкових сторінках API.

Налаштовування панелі управління за допомогою прапорців у ClusterConfiguration

Обʼєкт конфігурації панелі управління kubeadm надає можливість користувачам перевизначати типові прапорці, що передаються компонентам панелі управління, таким як APIServer, ControllerManager, Scheduler та Etcd. Компоненти визначаються за допомогою наступних структур:

  • apiServer
  • controllerManager
  • scheduler
  • etcd

Ці структури містять спільне поле extraArgs, яке складається з пар name / value. Щоб перевизначити прапорець для компонента панелі управління:

  1. Додайте відповідні extraArgs до вашої конфігурації.
  2. Додайте прапорці до поля extraArgs.
  3. Запустіть kubeadm init з --config <ВАШ КОНФІГ YAML>.

Прапорці APIServer

Докладну інформацію див. у довідковій документації для kube-apiserver.

Приклад використання:

apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration
kubernetesVersion: v1.16.0
apiServer:
  extraArgs:
  - name: "enable-admission-plugins"
    value: "AlwaysPullImages,DefaultStorageClass"
  - name: "audit-log-path"
    value: "/home/johndoe/audit.log"

Прапорці ControllerManager

Докладну інформацію див. у довідковій документації для kube-controller-manager.

Приклад використання:

apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration
kubernetesVersion: v1.16.0
controllerManager:
  extraArgs:
  - name: "cluster-signing-key-file"
    value: "/home/johndoe/keys/ca.key"
  - name: "deployment-controller-sync-period"
    value: "50"

Прапорці планувальника

Докладну інформацію див. у довідковій документації для kube-scheduler.

Приклад використання:

apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration
kubernetesVersion: v1.16.0
scheduler:
  extraArgs:
  - name: "config"
    value: "/etc/kubernetes/scheduler-config.yaml"
  extraVolumes:
    - name: schedulerconfig
      hostPath: /home/johndoe/schedconfig.yaml
      mountPath: /etc/kubernetes/scheduler-config.yaml
      readOnly: true
      pathType: "File"

Прапорці etcd

Докладну інформацію див. у документації сервера etcd.

Приклад використання:

apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration
etcd:
  local:
    extraArgs:
    - name: "election-timeout"
      value: 1000

Налаштування за допомогою патчів

СТАН ФУНКЦІОНАЛУ: Kubernetes v1.22 [beta]

Kubeadm дозволяє передавати теку з файлами патчів в InitConfiguration та JoinConfiguration на окремих вузлах. Ці патчі можна використовувати як останній крок налаштування перед записом конфігурації компонента на диск.

Ви можете передати цей файл в kubeadm init за допомогою --config <ВАШ КОНФІГ YAML>:

apiVersion: kubeadm.k8s.io/v1beta4
kind: InitConfiguration
patches:
  directory: /home/user/somedir

Ви можете передати цей файл в kubeadm join за допомогою --config <ВАШ КОНФІГ YAML>:

apiVersion: kubeadm.k8s.io/v1beta4
kind: JoinConfiguration
patches:
  directory: /home/user/somedir

Тека має містити файли з назвами target[suffix][+patchtype].extension. Наприклад, kube-apiserver0+merge.yaml або просто etcd.json.

  • target може бути одним із kube-apiserver, kube-controller-manager, kube-scheduler, etcd та kubeletconfiguration.
  • suffix — це необовʼязковий рядок, який можна використовувати для визначення порядку застосування патчів за алфавітною послідовністю.
  • patchtype може бути одним із strategic, merge або json і вони повинні відповідати форматам патчів, підтримуваним kubectl. Типово patchtype — strategic.
  • extension повинен бути або json, або yaml.

Налаштування kubelet

Щоб налаштувати kubelet, ви можете додати KubeletConfiguration поруч із ClusterConfiguration або InitConfiguration, розділеними --- у тому самому файлі конфігурації. Цей файл потім можна передати до kubeadm init, і kubeadm застосує ту ж саму базову KubeletConfiguration для всіх вузлів у кластері.

Для застосування конфігурації, специфічної для екземпляра, понад базовою KubeletConfiguration, ви можете використовувати ціль патчу kubeletconfiguration.

Також ви можете використовувати прапорці kubelet як перевизначення, передаючи їх у поле nodeRegistration.kubeletExtraArgs, яке підтримується як InitConfiguration, так і JoinConfiguration. Деякі прапорці kubelet є застарілими, тому перевірте їх статус у довідковій документації kubelet, перш ніж їх використовувати.

Додаткові деталі дивіться в розділі Налаштування кожного kubelet у вашому кластері за допомогою kubeadm

Налаштування kube-proxy

Щоб налаштувати kube-proxy, ви можете передати KubeProxyConfiguration поруч з ClusterConfiguration або InitConfiguration до kubeadm init, розділені ---.

Для отримання докладнішої інформації ви можете перейти на наші сторінки API-посилань.

Змінено August 27, 2024 at 9:57 PM PST: Removing the reviewers section from the front matter (81a711722d)