Налаштування компонентів за допомогою kubeadm API
Ця сторінка охоплює способи налаштування компонентів, які розгортаються за допомогою kubeadm. Для компонентів панелі управління можна використовувати прапорці у структурі ClusterConfiguration або патчі на рівні вузла. Для kubelet і kube-proxy ви можете використовувати KubeletConfiguration та KubeProxyConfiguration, відповідно.
Всі ці опції можливі за допомогою конфігураційного API kubeadm. Докладніше про кожне поле в конфігурації ви можете дізнатися на наших довідкових сторінках API.
Примітка:
Щоб переконфігурувати кластер, який вже був створений, дивіться Переконфігурація кластера з kubeadm.Налаштовування панелі управління за допомогою прапорців у ClusterConfiguration
Обʼєкт конфігурації панелі управління kubeadm надає можливість користувачам перевизначати типові прапорці, що передаються компонентам панелі управління, таким як APIServer, ControllerManager, Scheduler та Etcd. Компоненти визначаються за допомогою наступних структур:
apiServercontrollerManagerscheduleretcd
Ці структури містять спільне поле extraArgs, яке складається з пар name / value. Щоб перевизначити прапорець для компонента панелі управління:
- Додайте відповідні
extraArgsдо вашої конфігурації. - Додайте прапорці до поля
extraArgs. - Запустіть
kubeadm initз--config <ВАШ КОНФІГ YAML>.
Примітка:
Ви можете згенерувати обʼєктClusterConfiguration з типовими значеннями, використовуючи kubeadm config print init-defaults і зберігши вивід у файл на ваш вибір.Примітка:
ОбʼєктClusterConfiguration наразі є глобальним у кластерах kubeadm. Це означає, що будь-які прапорці, які ви додаєте, будуть застосовуватися до всіх екземплярів того самого компонента на різних вузлах. Щоб застосовувати індивідуальну конфігурацію для кожного компонента на різних вузлах, ви можете використовувати патчі.Примітка:
Дублювання прапорців (ключів) або передача одного й того ж прапорця--foo кілька разів наразі не підтримується. Для обходу цього обмеження слід використовувати патчі.Прапорці 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 init ви можете передати файл, який містить як ClusterConfiguration, так і InitConfiguration розділені ---.Ви можете передати цей файл в 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таcorednsdeployment.suffix— це необовʼязковий рядок, який можна використовувати для визначення порядку застосування патчів за алфавітною послідовністю.patchtypeможе бути одним ізstrategic,mergeабоjsonі вони повинні відповідати форматам патчів, підтримуваним kubectl. Типовоpatchtype—strategic.extensionповинен бути абоjson, абоyaml.
Примітка:
Якщо ви використовуєтеkubeadm upgrade для оновлення ваших вузлів kubeadm, вам слід знову надати ті самі патчі, щоб налаштування залишалося після оновлення. Для цього ви можете використовувати прапорець --patches, який повинен вказувати на ту саму теку. kubeadm upgrade зараз не підтримує структуру конфігурації API,
яка може бути використана для того самого.Налаштування 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-посилань.
Примітка:
kubeadm розгортає kube-proxy як DaemonSet, що означає, щоKubeProxyConfiguration буде застосовуватися до всіх екземплярів kube-proxy в кластері.Customizing CoreDNS
kubeadm дозволяє налаштувати Deployment CoreDNS за допомогою патчів для corednsdeployment patch target.
Патчі для інших обʼєктів API, повʼязаних з CoreDNS, таких як kube-system/coredns ConfigMap, наразі не підтримуються. Ви повинні вручну виправити будь-який з цих обʼєктів за допомогою kubectl, а потім перестворити Podʼи CoreDNS.
Як альтернативу, ви можете вимкнути розгортання kubeadm CoreDNS, включивши наступну опцію у ваш ClusterConfiguration:
dns:
disabled: true
Також, виконавши наступну команду:
kubeadm init phase addon coredns --print-manifest --config my-config.yaml`
ви можете отримати файл маніфесту, який kubeadm створить для CoreDNS у вашій конфігурації.