Налаштування компонентів за допомогою kubeadm API
Ця сторінка охоплює способи налаштування компонентів, які розгортаються за допомогою kubeadm. Для компонентів панелі управління можна використовувати прапорці у структурі ClusterConfiguration
або патчі на рівні вузла. Для kubelet і kube-proxy ви можете використовувати KubeletConfiguration
та KubeProxyConfiguration
, відповідно.
Всі ці опції можливі за допомогою конфігураційного API kubeadm. Докладніше про кожне поле в конфігурації ви можете дізнатися на наших довідкових сторінках API.
Примітка:
На жаль, наразі не підтримується налаштування розгортання CoreDNS за допомогою kubeadm. Вам слід вручну патчити ConfigMapkube-system/coredns
та перестворити Pods CoreDNS після цього. Альтернативно, ви можете пропустити типове розгортання CoreDNS та розгорнути свій варіант. Докладніше про це читайте у Використання фаз ініціалізації з kubeadm.Примітка:
Щоб переконфігурувати кластер, який вже був створений, дивіться Переконфігурація кластера з kubeadm.Налаштовування панелі управління за допомогою прапорців у ClusterConfiguration
Обʼєкт конфігурації панелі управління kubeadm надає можливість користувачам перевизначати типові прапорці, що передаються компонентам панелі управління, таким як APIServer, ControllerManager, Scheduler та Etcd. Компоненти визначаються за допомогою наступних структур:
apiServer
controllerManager
scheduler
etcd
Ці структури містять спільне поле 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
.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 в кластері.