На цій сторінці показано, як увімкнути або вимкнути функціональні можливості для керування певними функціями Kubernetes у вашому кластері. Увімкнення функціональних можливостей дозволяє тестувати та використовувати функції Alpha або Beta до того, як вони стануть загальнодоступними.
Вам треба мати кластер Kubernetes, а також інструмент командного рядка kubectl має бути налаштований для роботи з вашим кластером. Рекомендується виконувати ці настанови у кластері, що має щонайменше два вузли, які не виконують роль вузлів управління. Якщо у вас немає кластера, ви можете створити його, за допомогою minikube або використовувати одну з цих пісочниць:
Вам також потрібно:
Перед увімкненням функціональної можливості перевірте довідку про функціональні можливості щодо рівня зрілості функції:
Різні функціональні можливості впливають на різні компоненти Kubernetes:
У довідці про функціональні можливості зазвичай вказано, на які компоненти впливає кожна функція. Усі компоненти Kubernetes мають однакові визначення функціональних можливостей, тому всі функції відображаються у вікні довідки, але на поведінку кожного компонента впливають лише відповідні функції.
Створіть файл конфігурації, щоб увімкнути функціональні можливості для відповідних компонентів:
apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration
apiServer:
extraArgs:
feature-gates: "FeatureName=true"
controllerManager:
extraArgs:
feature-gates: "FeatureName=true"
scheduler:
extraArgs:
feature-gates: "FeatureName=true"
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
featureGates:
FeatureName: true
Ініціалізуйте кластер:
kubeadm init --config kubeadm-config.yaml
Для кластерів kubeadm конфігурацію функціональних можливостей можна налаштувати в декількох місцях, включаючи файли маніфесту, файли конфігурації та конфігурацію kubeadm.
Відредагуйте маніфести компонентів панелі управління в /etc/kubernetes/manifests/:
Для kube-apiserver, kube-controller-manager або kube-scheduler додайте прапорець до команди:
spec:
containers:
- command:
- kube-apiserver
- --feature-gates=FeatureName=true
# ... інші прапорці
Збережіть файл. Pod автоматично перезапуститься.
Для kubelet, відредагуйте /var/lib/kubelet/config.yaml:
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
featureGates:
FeatureName: true
Перезапустіть kubelet:
sudo systemctl restart kubelet
Для kube-proxy, змініть ConfigMap:
kubectl -n kube-system edit configmap kube-proxy
Додайте функціональні можливості до конфігурації:
featureGates:
FeatureName: true
Перезапустіть DaemonSet:
kubectl -n kube-system rollout restart daemonset kube-proxy
Використовуйте списки, розділені комами, для прапорців командного рядка:
--feature-gates=FeatureA=true,FeatureB=false,FeatureC=true
Для компонентів, що підтримують файли конфігурації (kubelet, kube-proxy):
featureGates:
FeatureA: true
FeatureB: false
FeatureC: true
/etc/kubernetes/manifests/. Хоча ці компоненти підтримують файли конфігурації за допомогою прапорця --config, kubeadm в основному використовує прапорці командного рядка.Після налаштування перевірте, чи функціональні можливості активні. Наступні методи застосовуються до кластерів kubeadm, де компоненти панелі управління працюють як статичні поди.
Перегляньте функціональні можливості, налаштовані в маніфесті статичного пода:
kubectl -n kube-system get pod kube-apiserver-<node-name> -o yaml | grep feature-gates
Використовуйте точку доступу configz kubelet:
kubectl proxy --port=8001 &
curl -sSL «http://localhost:8001/api/v1/nodes/<node-name>/proxy/configz» | grep featureGates -A 5
Або перевірте файл конфігурації безпосередньо на вузлі:
cat /var/lib/kubelet/config.yaml | grep -A 10 featureGates
Статус функціональної можливості виводиться в метриках у стилі Prometheus компонентами Kubernetes (доступно в Kubernetes 1.26+). Запитайте точку доступу метрик, щоб перевірити, які функціональні можливості включені:
kubectl get --raw /metrics | grep kubernetes_feature_enabled
Щоб перевірити конкретну функціональну можливість:
kubectl get --raw /metrics | grep kubernetes_feature_enabled | grep FeatureName
Метрика показує 1 для увімкнених можливостей і 0 для вимкнених можливостей.
Якщо ви маєте доступ до точок доступу для налагодження компонента і для цього компонента ввімкнено функціональну можливість ComponentFlagz, ви можете перевірити прапорці командного рядка, які використовувалися для запуску компонента, відвідавши точку доступу /flagz. Функціональні можливості, налаштовані за допомогою прапорців командного рядка, відображаються в цьому виводі.
Точка доступу /flagz є частиною Kubernetes z-pages, які надають зрозумілу для людини інформацію про налагодження під час виконання для основних компонентів.
Для отримання додаткової інформації див. документацію z-pages.
Деякі приклади функціональних можливостей, специфічних для компонентів:
StructuredAuthenticationConfiguration, в першу чергу впливають на kube-apiserverGracefulNodeShutdown, в першу чергу впливають на kubeletЗавжди спочатку тестуйте функціональні можливості на тестових середовищах. Функції Alpha можуть бути видалені без попередження.