Лабораторна робота 8: Запуск Kubernetes Control Plane¶
Info
Це гілка розгалуження від оригінальної "Kubernetes the hard way", Келсі Хайтауера (GitHub: kelseyhightower). На відміну від оригіналу, який базується на дистрибутивах, подібних до Debian, для архітектури ARM64, ця гілка націлена на дистрибутиви Enterprise Linux, такі як Rocky Linux, який працює на архітектурі x86_64.
У цій лабораторній роботі ви завантажите площину керування Kubernetes. Ви встановите такі компоненти на контролері: сервер Kubernetes API, планувальник і диспетчер контролера.
Передумови¶
Підключіться до jumpbox
і скопіюйте двійкові файли Kubernetes і файли модуля systemd
до примірника server
:
scp \
downloads/kube-apiserver \
downloads/kube-controller-manager \
downloads/kube-scheduler \
downloads/kubectl \
units/kube-apiserver.service \
units/kube-controller-manager.service \
units/kube-scheduler.service \
configs/kube-scheduler.yaml \
configs/kube-apiserver-to-kubelet.yaml \
root@server:~/
Ви повинні запустити команди в наступних розділах цієї лабораторної роботи на машині сервера
. Увійдіть до примірника контролера за допомогою команди ssh
. Приклад:
ssh root@server
Надання площини керування Kubernetes¶
Створіть каталог конфігурації Kubernetes:
mkdir -p /etc/kubernetes/config
Встановіть двійкові файли контролера Kubernetes¶
Встановіть двійкові файли Kubernetes:
chmod +x kube-apiserver \
kube-controller-manager \
kube-scheduler kubectl
mv kube-apiserver \
kube-controller-manager \
kube-scheduler kubectl \
/usr/local/bin/
Налаштуйте сервер API Kubernetes¶
mkdir -p /var/lib/kubernetes/
mv ca.crt ca.key \
kube-api-server.key kube-api-server.crt \
service-accounts.key service-accounts.crt \
encryption-config.yaml \
/var/lib/kubernetes/
Створіть одиничний файл kube-apiserver.service
systemd
:
mv kube-apiserver.service /etc/systemd/system/kube-apiserver.service
Налаштуйте менеджер контролера Kubernetes¶
Перемістіть kubeconfig kube-controller-manager
на місце:
mv kube-controller-manager.kubeconfig /var/lib/kubernetes/
Створіть файл модуля kube-controller-manager.service
systemd
:
mv kube-controller-manager.service /etc/systemd/system/
Налаштуйте планувальник Kubernetes¶
Перемістіть kube-scheduler
kubeconfig на місце:
mv kube-scheduler.kubeconfig /var/lib/kubernetes/
Створіть файл конфігурації kube-scheduler.yaml
:
mv kube-scheduler.yaml /etc/kubernetes/config/
Створіть системний файл блоку kube-scheduler.service
:
mv kube-scheduler.service /etc/systemd/system/
Запустіть служби контролера¶
systemctl daemon-reload
systemctl enable kube-apiserver \
kube-controller-manager kube-scheduler
systemctl start kube-apiserver \
kube-controller-manager kube-scheduler
Зачекайте до 10 секунд для повної ініціалізації сервера Kubernetes API.
Верифікація¶
kubectl cluster-info --kubeconfig admin.kubeconfig
Kubernetes control plane is running at https://127.0.0.1:6443
RBAC для авторизації Kubelet¶
У цьому розділі ви налаштуєте дозволи RBAC, щоб дозволити серверу API Kubernetes отримувати доступ до API Kubelet на кожному робочому вузлі. Доступ до Kubelet API потрібен для отримання показників і журналів, а також для виконання команд у модулях.
Цей підручник встановлює прапор Kubelet
--authorization-mode
наWebhook
. РежимWebhook
використовує SubjectAccessReview API для визначення авторизації.
Виконайте команди в цьому розділі на вузлі контролера, впливаючи на весь кластер.
ssh root@server
Створіть system:kube-apiserver-to-kubelet
ClusterRole із дозволами на доступ до API Kubelet і виконання найпоширеніших завдань, пов’язаних із керуванням пакетами:
kubectl apply -f kube-apiserver-to-kubelet.yaml \
--kubeconfig admin.kubeconfig
Перевірка RBAC¶
На даний момент площина керування Kubernetes запущена та працює. Виконайте наступні команди з машини jumpbox
, щоб переконатися, що вона працює:
Зробіть HTTP-запит на інформацію про версію Kubernetes:
curl -k --cacert ca.crt https://server.kubernetes.local:6443/version
{
"major": "1",
"minor": "32",
"gitVersion": "v1.32.0",
"gitCommit": "70d3cc986aa8221cd1dfb1121852688902d3bf53",
"gitTreeState": "clean",
"buildDate": "2024-12-11T17:59:15Z",
"goVersion": "go1.23.3",
"compiler": "gc",
"platform": "linux/amd64"
}
Далі: Завантаження робочих вузлів Kubernetes
Author: Wale Soyinka
Contributors: Steven Spencer, Ganna Zhyrnova