kubeadm Configuration (v1beta3)
Огляд
Пакунок v1beta3 визначає версію v1beta3 формату конфігураційного файлу kubeadm. Ця версія покращує формат v1beta2, виправляючи деякі незначні проблеми і додаючи кілька нових полів.
Список змін з версії v1beta2:
- Видалено застаріле поле "ClusterConfiguration.useHyperKubeImage". Kubeadm більше не підтримує образ hyperkube.
- Поле "ClusterConfiguration.dns.type" було видалено, оскільки CoreDNS є єдиним типом DNS-сервера, який підтримується kubeadm.
- Додано теги "datapolicy" до полів, які містять секрети. Це призведе до того, що значення полів буде пропущено, коли структури API буде надруковано за допомогою klog.
- Додано "InitConfiguration.skipPhases", "JoinConfiguration.SkipPhases", щоб дозволити пропустити список фаз під час виконання команд kubeadm init/join.
- Додано "InitConfiguration.nodeRegistration.imagePullPolicy" та "JoinConfiguration.nodeRegistration.imagePullPolicy", щоб дозволити вказати політику отримання образів під час kubeadm "init" та "join". Значення має бути одним з "Always", "Never" або "IfNotPresent". "IfNotPresent" — це стандартне значення, яке використовувалося до цього оновлення.
- Додано "InitConfiguration.patches.directory", "JoinConfiguration.patches.directory", щоб дозволити користувачеві конфігурувати теку, з якої буде братися патч для компонентів, розгорнутих за допомогою kubeadm.
- Перенесено API BootstrapToken* та повʼязані з ним утиліти з групи API "kubeadm" до нової групи "bootstraptoken". API kubeadm версії v1beta3 більше не містить структур BootstrapToken*.
Міграція зі старих версій конфігурації kubeadm
- kubeadm v1.15.x і новіше можна використовувати для міграції з v1beta1 на v1beta2.
- kubeadm v1.22.x і новіші більше не підтримують v1beta1 і старіші API, але можуть бути використані для міграції з v1beta2 на v1beta3.
- kubeadm v1.27.x і новіші більше не підтримують v1beta2 і старіші API.
Основи
Найкращим способом налаштування kubeadm є передача конфігураційного файлу у форматі YAML з опцією --config. Деякі з параметрів конфігурації, визначених у конфігураційному файлі kubeadm, також доступні як прапорці командного рядка, але у цьому випадку підтримуються лише найпоширеніші/простіші випадки використання.
Конфігураційний файл kubeadm може містити декілька типів конфігурацій, розділених трьома тире (---).
kubeadm підтримує наступні типи конфігурацій:
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
apiVersion: kubeadm.k8s.io/v1beta3
kind: JoinConfiguration
Щоб вивести стандартні значення для дій "init" і "join", скористайтеся наступними командами:
kubeadm config print init-defaults
kubeadm config print join-defaults
Перелік типів конфігурацій, які необхідно включити до конфігураційного файлу, залежить від дії, яку ви виконуєте (init або join), а також від параметрів конфігурації, які ви збираєтесь використовувати (стандартні або розширені налаштування).
Якщо деякі типи конфігурацій не передбачено або передбачено лише частково, kubeadm використовуватиме стандартні значення; стандартно kubeadm також забезпечує узгодженість значень між компонентами, коли це необхідно (наприклад, прапорець --cluster-cidr на менеджері контролерів та clusterCIDR у kube-proxy).
Користувачам завжди дозволено перевизначати стандартні значення, за винятком невеликої підгрупи налаштувань, що мають стосунок до безпеки (наприклад, примусово вмикати режим авторизації Node і RBAC на api-сервері).
Якщо користувач надасть типи конфігурації, які не очікуються для дії, яку ви виконуєте, kubeadm проігнорує ці типи і видасть попередження.
Типи конфігурації Kubeadm init
При виконанні kubeadm init з опцією --config можуть бути використані наступні типи конфігурацій: InitConfiguration, ClusterConfiguration, KubeProxyConfiguration, KubeletConfiguration, але тільки один з них поміж InitConfiguration та ClusterConfiguration є обовʼязковим.
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
bootstrapTokens:
...
nodeRegistration:
...
Тип InitConfiguration слід використовувати для налаштування параметрів часу виконання, якими у випадку kubeadm init є конфігурація токена завантажувача та всі параметри, специфічні для вузла, на якому виконується kubeadm, включно з ними:
- NodeRegistration, що містить поля, які стосуються реєстрації нового вузла у кластері; використовуйте його, щоб налаштувати імʼя вузла, сокет CRI для використання або будь-які інші параметри, які мають застосовуватися лише до цього вузла (наприклад, ip вузла).
- LocalAPIEndpoint, що представляє точку доступу до екземпляра сервера API, який буде розгорнуто на цьому вузлі; використовуйте його, наприклад, для налаштування адреси оголошення сервера API.
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
networking:
...
etcd:
...
apiServer:
extraArgs:
...
extraVolumes:
...
...
Тип InitConfiguration слід використовувати для налаштування параметрів часу виконання, якими у випадку kubeadm init є конфігурація токена завантажувача та всі параметри, специфічні для вузла, на якому виконується kubeadm, включно з ними:
- NodeRegistration, що містить поля, які стосуються реєстрації нового вузла у кластері; використовуйте його, щоб налаштувати імʼя вузла, сокет CRI для використання або будь-які інші параметри, які мають застосовуватися лише до цього вузла (наприклад, ip вузла).
- LocalAPIEndpoint, що представляє точку доступу до екземпляра сервера API, який буде розгорнуто на цьому вузлі; використовуйте його, наприклад, для налаштування адреси оголошення сервера API.
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
networking:
...
etcd:
...
apiServer:
extraArgs:
...
extraVolumes:
...
...
Тип ClusterConfiguration слід використовувати для налаштування параметрів всього кластера, включаючи налаштування для:
networking, що містить конфігурацію мережевої топології кластера; використовуйте їх, наприклад, для налаштування підмережі Pod або підмережі сервісів.etcd: використовуйте для налаштування локального etcd або для налаштування сервера API для використання зовнішнього кластера etcd.- конфігурації kube-apiserver, kube-scheduler, kube-controller-manager; використовуйте для налаштування компонентів панелі управління шляхом додавання індивідуальних налаштувань або перевизначення стандартних налаштувань kubeadm.
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
...
Тип KubeProxyConfiguration слід використовувати для зміни конфігурації, що передається екземплярам kube-proxy, розгорнутим у кластері. Якщо цей обʼєкт не надано або надано лише частково, kubeadm застосовує стандартні значення.
Офіційну документацію про kube-proxy можна знайти на https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/ або https://pkg.go.dev/k8s.io/kube-proxy/config/v1alpha1#KubeProxyConfiguration.
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
...
Тип KubeletConfiguration слід використовувати для зміни конфігурацій, які буде передано всім екземплярам kubelet, розгорнутим у кластері. Якщо цей обʼєкт не надано або надано лише частково, kubeadm застосовує стандартні налаштування.
Офіційну документацію про kubelet див. на https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/ або https://pkg.go.dev/k8s.io/kubelet/config/v1beta1#KubeletConfiguration.
Ось повністю заповнений приклад одного YAML-файлу, що містить декілька типів конфігурації для використання під час запуску kubeadm init.
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
bootstrapTokens:
- token: "9a08jv.c0izixklcxtmnze7"
description: "kubeadm bootstrap token"
ttl: "24h"
- token: "783bde.3f89s0fje9f38fhf"
description: "another bootstrap token"
usages:
- authentication
- signing
groups:
- system:bootstrappers:kubeadm:default-node-token
nodeRegistration:
name: "ec2-10-100-0-1"
criSocket: "/var/run/dockershim.sock"
taints:
- key: "kubeadmNode"
value: "someValue"
effect: "NoSchedule"
kubeletExtraArgs:
v: 4
ignorePreflightErrors:
- IsPrivilegedUser
imagePullPolicy: "IfNotPresent"
localAPIEndpoint:
advertiseAddress: "10.100.0.1"
bindPort: 6443
certificateKey: "e6a2eb8581237ab72a4f494f30285ec12a9694d750b9785706a83bfcbbbd2204"
skipPhases:
- addon/kube-proxy
---
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
etcd:
# локальний або зовнішній etcd
local:
imageRepository: "registry.k8s.io"
imageTag: "3.2.24"
dataDir: "/var/lib/etcd"
extraArgs:
listen-client-urls: "http://10.100.0.1:2379"
serverCertSANs:
- "ec2-10-100-0-1.compute-1.amazonaws.com"
peerCertSANs:
- "10.100.0.1"
# external:
# endpoints:
# - "10.100.0.1:2379"
# - "10.100.0.2:2379"
# caFile: "/etcd/kubernetes/pki/etcd/etcd-ca.crt"
# certFile: "/etcd/kubernetes/pki/etcd/etcd.crt"
# keyFile: "/etcd/kubernetes/pki/etcd/etcd.key"
networking:
serviceSubnet: "10.96.0.0/16"
podSubnet: "10.244.0.0/24"
dnsDomain: "cluster.local"
kubernetesVersion: "v1.21.0"
controlPlaneEndpoint: "10.100.0.1:6443"
apiServer:
extraArgs:
authorization-mode: "Node,RBAC"
extraVolumes:
- name: "some-volume"
hostPath: "/etc/some-path"
mountPath: "/etc/some-pod-path"
readOnly: false
pathType: File
certSANs:
- "10.100.1.1"
- "ec2-10-100-0-1.compute-1.amazonaws.com"
timeoutForControlPlane: 4m0s
controllerManager:
extraArgs:
"node-cidr-mask-size": "20"
extraVolumes:
- name: "some-volume"
hostPath: "/etc/some-path"
mountPath: "/etc/some-pod-path"
readOnly: false
pathType: File
scheduler:
extraArgs:
bind-address: "10.100.0.1"
extraVolumes:
- name: "some-volume"
hostPath: "/etc/some-path"
mountPath: "/etc/some-pod-path"
readOnly: false
pathType: File
certificatesDir: "/etc/kubernetes/pki"
imageRepository: "registry.k8s.io"
clusterName: "example-cluster"
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
# параметри kubelet вказуються тут
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
# параметри kube-proxy вказуються тут
Типи конфігурації Kubeadm join
При виконанні kubeadm join з опцією --config слід вказати тип JoinConfiguration.
apiVersion: kubeadm.k8s.io/v1beta3
kind: JoinConfiguration
...
Тип JoinConfiguration слід використовувати для налаштування параметрів часу виконання, якими у випадку kubeadm join є метод виявлення, що використовується для доступу до інформації про кластер, а також всі налаштування, специфічні для вузла, на якому виконується kubeadm, включно з:
nodeRegistration, що містить поля, які стосуються реєстрації нового вузла у кластері; використовуйте його, щоб налаштувати імʼя вузла, сокет CRI для використання або будь-які інші параметри, які мають застосовуватися лише до цього вузла (наприклад, ip вузла).apiEndpoint, що представляє точку доступу до екземпляра сервера API, який буде розгорнуто на цьому вузлі.
ЗАСТАРІЛО: v1beta3 застаріло на користь v1beta4 і буде видалено в майбутньому випуску, 1.34 або пізнішому. Будь ласка, перейдіть на нову версію.
Типи ресурсів
BootstrapToken
Зʼявляється в:
BootstrapToken описує один bootstrap токен, збережений як Secret у кластері
| Поле | Опис |
|---|
token [Обовʼязково]
BootstrapTokenString | token використовується для встановлення двосторонньої довіри між вузлами та панелями управління. Використовується для приєднання вузлів до кластера.
|
description
string | description встановлює зрозуміле людини повідомлення про те, чому існує цей токен і для чого він використовується, щоб інші адміністратори знали його призначення.
|
ttl
meta/v1.Duration | ttl визначає час життя цього токена. Стандартно — 24h.
expires та ttl взаємовиключні.
|
expires
meta/v1.Time | expires вказує на мітку часу, коли цей токен закінчується. Стандартно встановлюється динамічно під час виконання на основі ttl. expires та ttl взаємовиключні.
|
usages
[]string | usages описує способи, якими цей токен може бути використаний. Стандартно може бути використаний для встановлення двосторонньої довіри, але це можна змінити тут.
|
groups
[]string | groups визначає додаткові групи, з якими цей токен буде автентифікуватися, якщо/коли використовуватиметься для автентифікації
|
BootstrapTokenString
Зʼявляється в:
BootstrapTokenString — це токен у форматі abcdef.abcdef0123456789, який використовується як для валідації практичності API-сервера з погляду вузла, що приєднується, так і як метод автентифікації вузла на етапі завантаження
у фазі "kubeadm join". Цей токен є і повинен бути короткотривалим.
| Поле | Опис |
|---|
- [Обовʼязково]
string | Опис відсутній. |
- [Обовʼязково]
string | Опис відсутній. |
ClusterConfiguration
ClusterConfiguration містить конфігурацію для всього кластера kubeadm.
| Поле | Опис |
|---|
apiVersion string | kubeadm.k8s.io/v1beta3 |
kind string | ClusterConfiguration |
etcd
Etcd | etcd містить конфігурацію для etcd.
|
networking
Networking | networking містить конфігурацію для мережевої топології кластера.
|
kubernetesVersion
string | kubernetesVersion — це цільова версія панелі управління.
|
controlPlaneEndpoint
string | controlPlaneEndpoint встановлює стабільну IP-адресу або DNS-імʼя для панелі управління. Це може бути дійсна IP-адреса або субдомен RFC-1123 DNS з додатковим TCP портом. Якщо controlPlaneEndpoint не вказано, використовуються advertiseAddress + bindPort; якщо controlPlaneEndpoint вказано без TCP порту, використовується bindPort. Можливі варіанти використання:
- У кластері з більше ніж одним екземпляром панелі управління це поле повинно бути присвоєно адресу зовнішнього балансувальника навантаження перед екземплярами панелі управління.
- У середовищах з обовʼязковим перерозподілом вузлів
controlPlaneEndpoint може бути використаний для призначення стабільного DNS панелі управління.
|
apiServer
APIServer | apiServer містить додаткові налаштування для API сервера.
|
controllerManager
ControlPlaneComponent | controllerManager містить додаткові налаштування для менеджера контролерів.
|
scheduler
ControlPlaneComponent | scheduler містить додаткові налаштування для планувальника.
|
dns
DNS | dns визначає опції для DNS надбудови, встановленої в кластері.
|
certificatesDir
string | certificatesDir вказує, де зберігати або шукати всі необхідні сертифікати.
|
imageRepository
string | imageRepository встановлює реєстр контейнерів для завантаження образів. Якщо порожнє, стандартно буде використано registry.k8s.io. Якщо версія Kubernetes є CI-збіркою (версія Kubernetes починається з ci/), gcr.io/k8s-staging-ci-images буде використовуватись для компонентів панелі управління та для kube-proxy, тоді як registry.k8s.io буде використано для всіх інших образів.
|
featureGates
map[string]bool | featureGates містить функціональні можливості, увімкнені користувачем.
|
clusterName
string | Назва кластера. Ця назва буде використовуватися у файлах kubeconfig, що генеруються kubeadm, а також буде передаватися як значення прапорця --cluster-name kube-controller-manager. Стандартне значення — "kubernetes". |
InitConfiguration
InitConfiguration містить список елементів, специфічних для "kubeadm init"-тільки під час виконання. Тільки інформація kubeadm init. Ці поля використовуються виключно під час першого запуску kubeadm init. Після цього інформація в цих полях НЕ завантажується в kubeadm-config ConfigMap, який використовується, наприклад, під час kubeadm upgrade. Ці поля мають бути порожніми.
| Поле | Опис |
|---|
apiVersion string | kubeadm.k8s.io/v1beta3 |
kind string | InitConfiguration |
bootstrapTokens
[]BootstrapToken | bootstrapTokens використовується під час kubeadm init і описує набір Bootstrap Tokens для створення. Ця інформація НЕ завантажується в kubeadm cluster configmap, частково через її конфіденційний характер
|
nodeRegistration
NodeRegistrationOptions | nodeRegistration містить поля, що стосуються реєстрації нового вузла панелі управління в кластері.
|
localAPIEndpoint
APIEndpoint | localAPIEndpoint представляє точку доступу екземпляра API сервера, яка розгорнута на цьому вузлі панелі управління. У HA-налаштуваннях це відрізняється від ClusterConfiguration.controlPlaneEndpoint в тому сенсі, що controlPlaneEndpoint є глобальною точкою доступу для кластера, яка потім розподіляє запити на кожен окремий API сервер. Цей конфігураційний обʼєкт дозволяє налаштувати, яку IP-адресу/DNS-імʼя та порт локальний API сервер оголошує як доступні. Стандартно kubeadm намагається автоматично визначити типову IP-адресу інтерфейсу та використовувати її, але в разі невдачі ви можете встановити бажане значення тут.
|
certificateKey
string | certificateKey встановлює ключ, яким сертифікати та ключі шифруються перед завантаженням у Secret в кластері під час фази uploadcerts init. Ключ сертифіката є кодуванням шістнадцяткового рядка, який є AES ключем розміром 32 байти.
|
skipPhases
[]string | skipPhases — це список фаз, які потрібно пропустити під час виконання команди. Список фаз можна отримати за допомогою команди kubeadm init --help. Прапорець "--skip-phases" має пріоритет перед цим полем.
|
patches
Patches | patches містить опції, повʼязані з застосуванням патчів до компонентів, розгорнутих за допомогою kubeadm під час kubeadm init.
|
JoinConfiguration
JoinConfiguration містить елементи, що описують певний вузол.
| Поле | Опис |
|---|
apiVersion string | kubeadm.k8s.io/v1beta3 |
kind string | JoinConfiguration |
nodeRegistration
NodeRegistrationOptions | nodeRegistration містить поля, що стосуються реєстрації нового
вузла панелі управління в кластері.
|
caCertPath
string | caCertPath — це шлях до SSL центра сертифікації, що використовується для захисту звʼязку між вузлом та панеллю управління. Стандартно — /etc/kubernetes/pki/ca.crt.
|
discovery [Обовʼязкове]
Discovery | discovery визначає параметри, які kubelet використовує під час процесу TLS старту.
|
controlPlane
JoinControlPlane | controlPlane визначає додатковий екземпляр панелі управління, який буде розгорнутий на приєднаному вузлі. Якщо nil, додатковий екземпляр панелі управління не буде розгорнуто.
|
skipPhases
[]string | skipPhases — це список фаз, які потрібно пропустити під час виконання команди. Список фаз можна отримати за допомогою команди kubeadm join --help. Прапорець --skip-phases має пріоритет перед цим полем.
|
patches
Patches | patches містить параметри, повʼязані із застосуванням патчів до компонентів, розгорнутих за допомогою kubeadm під час kubeadm join.
|
APIEndpoint
Зʼявляється в:
Структура APIEndpoint містить елементи екземпляра API сервера, розгорнутого на вузлі.
| Поле | Опис |
|---|
advertiseAddress
string | advertiseAddress встановлює IP-адресу, яку буде оголошувати API сервер.
|
bindPort
int32 | bindPort встановлює безпечний порт, до якого буде привʼязаний API сервер. Стандартно — 6443.
|
APIServer
Зʼявляється в:
APIServer містить налаштування, необхідні для розгортання API сервера в кластері.
| Поле | Опис |
|---|
ControlPlaneComponent [Обовʼязкове]
ControlPlaneComponent | (Члени ControlPlaneComponent вбудовані в цей тип.)
Опис відсутній. |
certSANs
[]string | certSANs встановлює додаткові альтернативні імена субʼєктів (SANs) для сертифіката підпису API сервера.
|
timeoutForControlPlane
meta/v1.Duration | timeoutForControlPlane контролює тайм-аут, який ми очікуємо для появи API сервера.
|
BootstrapTokenDiscovery
Зʼявляється в:
BootstrapTokenDiscovery використовується для налаштування параметрів виявлення на основі маркера початкового завантаження.
| Поле | Опис |
|---|
token [Обовʼязкове]
string | token — це маркер, що використовується для перевірки інформації про кластер, отриманої з панелі управління.
|
apiServerEndpoint
string | apiServerEndpoint — це IP-адреса або доменне імʼя до API сервера, з якого буде отримана інформація.
|
caCertHashes
[]string | caCertHashes вказує набір публічних ключів для перевірки при використанні виявлення на основі маркера. Кореневий сертифікат CA, знайдений під час виявлення, повинен відповідати одному з цих значень. Зазначення порожнього набору відключає закріплення кореневого сертифіката CA, що може бути небезпечним. Кожен хеш зазначається у форматі <type>:<value>, де єдиним підтримуваним типом на даний момент є "sha256". Це хеш SHA-256 у шістнадцятковому форматі, який обчислюється за допомогою обʼєкта Subject Public Key Info (SPKI) у DER-кодованому форматі ASN.1. Ці хеші можна обчислити за допомогою, наприклад, OpenSSL.
|
unsafeSkipCAVerification
bool | unsafeSkipCAVerification дозволяє виявлення на основі маркера без перевірки CA за допомогою caCertHashes. Це може послабити безпеку kubeadm, оскільки інші вузли можуть видавати себе за панель управління.
|
ControlPlaneComponent
Зʼявляється в:
ControlPlaneComponent містить налаштування, спільні для компонентів панелі управління кластера.
| Поле | Опис |
|---|
extraArgs
map[string]string | extraArgs — це додатковий набір параметрів, що передаються компоненту панелі кправління. Ключ у цьому map — це імʼя параметра, як воно зʼявляється в командному рядку, без попереднього дефіса(ів).
|
extraVolumes
[]HostPathMount | extraVolumes — це додатковий набір хост-томів, змонтованих до компоненту панелі управління.
|
DNS
Зʼявляється в:
DNS визначає надбудовою DNS, що має використовуватися в кластері.
| Поле | Опис |
|---|
ImageMeta [Обовʼязкове]
ImageMeta | (Члени ImageMeta вбудовані в цей тип.)imageMeta дозволяє налаштувати образ, яке використовується для компонента DNS.
|
Discovery
Зʼявляється в:
Discovery визначає параметри для kubelet, які використовуються під час процесу TLS Bootstrap.
| Поле | Опис |
|---|
bootstrapToken
BootstrapTokenDiscovery | bootstrapToken використовується для налаштування параметрів на основі токена bootstrap.
bootstrapToken і file є взаємовиключними.
|
file
FileDiscovery | file використовується для вказівки файлу або URL-адреси до файлу kubeconfig, з якого завантажується інформація про кластер.
bootstrapToken і file є взаємовиключними.
|
tlsBootstrapToken
string | tlsBootstrapToken є токеном, який використовується для TLS bootstrapping. Якщо bootstrapToken встановлено, це поле стандартно встановлюється на .bootstrapToken.token, але може бути перевизначено. Якщо встановлено file, це поле має бути встановлено у випадку, якщо KubeConfigFile не містить іншої інформації для автентифікації.
|
timeout
meta/v1.Duration | timeout змінює час очікування під час виявлення.
|
Etcd
Зʼявляється в:
Etcd містить елементи, що описують конфігурацію Etcd.
| Поле | Опис |
|---|
local
LocalEtcd | local надає параметри конфігурації для налаштування локального екземпляра etcd.
local і external є взаємовиключними.
|
external
ExternalEtcd | external описує, як підключитися до зовнішнього кластера etcd.
local і external є взаємовиключними.
|
ExternalEtcd
Зʼявляється в:
ExternalEtcd описує зовнішній кластер etcd. Kubeadm не має знань про знаходження файлів сертифікатів, і вони повинні бути надані.
| Поле | Опис |
|---|
endpoints [Обовʼязково]
[]string | endpoints містить список учасників etcd.
|
caFile [Обовʼязково]
string | caFile є файлом сертифіката SSL Certificate Authority (CA), який використовується для захисту звʼязку etcd. Обовʼязковий, якщо використовується TLS-зʼєднання.
|
certFile [Обовʼязково]
string | certFile є файлом сертифіката SSL, який використовується для захисту звʼязку etcd. Обовʼязковий, якщо використовується TLS-зʼєднання.
|
keyFile [Обовʼязково]
string | keyFile є файлом ключа SSL, який використовується для захисту звʼязку etcd. Обовʼязковий, якщо використовується TLS-зʼєднання.
|
FileDiscovery
Зʼявляється в:
FileDiscovery використовується для вказання файлу або URL до файлу kubeconfig, з якого завантажується інформація про кластер.
| Поле | Опис |
|---|
kubeConfigPath [Обовʼязково]
string | kubeConfigPath використовується для вказання фактичного шляху до файлу або URL до файлу kubeconfig, з якого завантажується інформація про кластер.
|
HostPathMount
Зʼявляється в:
HostPathMount містить елементи, що описують томи, які монтуються з хоста.
| Поле | Опис |
|---|
name [Обовʼязково]
string | name — це імʼя тому всередині шаблону Pod.
|
hostPath [Обовʼязково]
string | hostPath — це шлях на хості, який буде змонтовано всередині Pod.
|
mountPath [Обовʼязково]
string | mountPath — це шлях всередині Pod, куди буде змонтовано hostPath.
|
readOnly
bool | readOnly контролює доступ на запис до тому.
|
pathType
core/v1.HostPathType | pathType — це тип hostPath.
|
Зʼявляється в:
ImageMeta дозволяє налаштувати образи, що використовуються для компонентів, які не походять з процесу випуску Kubernetes/Kubernetes
| Поле | Опис |
|---|
imageRepository
string | imageRepository встановлює реєстр контейнерів, з якого будуть завантажені образи. Якщо не встановлено, буде використовуватися imageRepository, визначений у ClusterConfiguration.
|
imageTag
string | imageTag дозволяє вказати теґ для образу. Якщо це значення встановлено, kubeadm не буде автоматично змінювати версію вище зазначених компонентів під час оновлень.
|
JoinControlPlane
Зʼявляється в:
JoinControlPlane містить елементи, що описують додатковий екземпляр панелі управління, який потрібно розгорнути на приєднаному вузлі.
| Поле | Опис |
|---|
localAPIEndpoint
APIEndpoint | localAPIEndpoint представляє точку доступу для екземпляра API-сервера, який буде розгорнуто на цьому вузлі.
|
certificateKey
string | certificateKey є ключем, який використовується для дешифрування сертифікатів після їх завантаження з секрету під час приєднання нового вузла панелі упралвіння. Відповідний ключ шифрування знаходиться в InitConfiguration. Ключ сертифіката є рядком у шістнадцятковому кодуванні, що є AES-ключем розміром 32 байти.
|
LocalEtcd
Зʼявляється в:
LocalEtcd описує, що kubeadm має запускати кластер etcd локально.
| Поле | Опис |
|---|
ImageMeta [Обовʼязкове]
ImageMeta | (Члени ImageMeta інтегровані в цей тип.)ImageMeta дозволяє налаштувати образ контейнера, що використовується для etcd. Передача власного образу etcd повідомляє kubeadm upgrade, що цей образ управляється користувачем і його оновлення необхідно пропустити. |
dataDir [Обовʼязкове]
string | dataDir — це тека, в якій etcd розміщуватиме свої дані. Стандартно використовується "/var/lib/etcd".
|
extraArgs
map[string]string | extraArgs — додаткові аргументи, що передаються бінарному файлу etcd при його запуску всередині статичного Pod. Ключ у цьому map є імʼям прапорця, як він зʼявляється на командному рядку, але без дефісів на початку.
|
serverCertSANs
[]string | serverCertSANs задає додаткові Subject Alternative Names (SANs) для сертифіката підпису сервера etcd.
|
peerCertSANs
[]string | peerCertSANs задає додаткові Subject Alternative Names (SANs) для сертифіката підпису peer etcd.
|
Networking
Зʼявляється в:
Networking містить елементи, що описують конфігурацію мережі кластера.
| Поле | Опис |
|---|
serviceSubnet
string | serviceSubnet — це підмережа, що використовується Kubernetes Services. Стандртно — "10.96.0.0/12".
|
podSubnet
string | podSubnet — це підмережа, що використовується Pod.
|
dnsDomain
string | dnsDomain — це DNS домен, що використовується Kubernetes Services. Стандартно — "cluster.local".
|
NodeRegistrationOptions
Зʼявляється в:
NodeRegistrationOptions містить поля, що стосуються реєстрації нової панелі управління або вузла в кластері, як через kubeadm init, так і через kubeadm join.
| Поле | Опис |
|---|
name
string | name — це поле .metadata.name обʼєкта Node API, який буде створений в процесі kubeadm init або kubeadm join. Це поле також використовується в полі CommonName клієнтського сертифікату kubelet до API сервера. Стандартно буде використано імʼя хоста вузла, якщо не надано.
|
criSocket
string | criSocket використовується для отримання інформації про середовище виконання контейнерів. Ця інформація буде анотована до обʼєкта Node API для подальшого використання.
|
taints [Обовʼязково]
[]core/v1.Taint | taints вказує на taints, з якими обʼєкт Node API повинен бути зареєстрований. Якщо це поле не встановлено, тобто nil, воно буде стандартно з control-plane taint для вузлів control-plane. Якщо ви не хочете taint для вашого вузла control-plane, встановіть в це поле порожній список, тобто taints: [] у YAML файлі. Це поле використовується виключно для реєстрації вузлів.
|
kubeletExtraArgs
map[string]string | kubeletExtraArgs передає додаткові аргументи до kubelet. Аргументи тут передаються в командний рядок kubelet через файл середовища kubeadm, що створюється під час виконання, щоб kubelet міг його використовувати. Це переважає загальну базову конфігурацію в ConfigMap kubelet-config. Прапорці мають вищий пріоритет під час парсингу. Ці значення локальні та специфічні для вузла, на якому виконується kubeadm. Ключ у цьому словнику — це назва прапорці, як вона зʼявляється в командному рядку, але без початкових дефісів.
|
ignorePreflightErrors
[]string | ignorePreflightErrors надає список помилок перед запуском, які слід ігнорувати під час реєстрації поточного вузла, наприклад, IsPrevilegedUser,Swap. Значення all ігнорує помилки від усіх перевірок.
|
imagePullPolicy
core/v1.PullPolicy | imagePullPolicy вказує політику для витягування образів під час операцій kubeadm "init" та "join". Значення цього поля повинно бути одне з "Always", "IfNotPresent" або "Never". Якщо це поле не встановлено, kubeadm стандартно встановить його в "IfNotPresent", або витягне необхідні образи, якщо вони не присутні на хості.
|
Patches
Зʼявляється в:
Patches містить параметри, повʼязані з застосуванням патчів до компонентів, розгорнутих за допомогою kubeadm.
| Поле | Опис |
|---|
directory
string | directory — це шлях до теки, що містить файли, названі
"target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json" та відповідати форматам патчів, підтримуваних kubectl. Стандартно "patchtype" — "strategic". "extension" повинна бути або "json", або "yaml". "suffix" — це необовʼязковий рядок, який може бути використаний для визначення, які патчі застосовуються першими за алфавітним порядком.
|