Kubernetes upgrade: различия между версиями
Kaf (обсуждение | вклад) |
Kaf (обсуждение | вклад) |
||
Строка 86: | Строка 86: | ||
==== Модификация настроек apt для обновления rpm-пакетов ==== | ==== Модификация настроек apt для обновления rpm-пакетов ==== | ||
Кроме развертывания промежуточных образов из docker-регистратора <code>registry.local</code> при обновлении кластера необходимо на всех узлах кластера добавить в <code>apt</code> доступ к репохторию пакетов промежуточных команд <code>kubelet</code>, <code>kubeadm</code>, <code>crctl</code>, <code>cri-o</code>, <code>...</code>. | |||
Для этого На всех узлах кластера выполните нижеперечисленные операции. | |||
Наберите команду | |||
<pre> | |||
# apt-repo | |||
</pre> | |||
и найдите строку начинающуюся с <code>rpm cdrom</code>: | |||
<pre> | |||
rpm cdrom:[ALT SP Server 11100-01 x86_64 build 2023-05-29]/ ALTLinux main | |||
</pre> | |||
Если строка присутствует - удалите ее: | |||
<pre> | |||
apt-repo rm 'rpm cdrom:[ALT SP Server 11100-01 x86_64 build 2023-05-29]/ ALTLinux main' | |||
</pre> | |||
Добавьте описание дерева <code>RPM-пакетов</code>, развернутых на сервере с доменом <code>sigstore.local</code> и доступных через WEB-сервер на порту <code>81</code>: | |||
<pre> | |||
apt-repo add 'rpm http://sigstore.local:81/ALTLinux . main' | |||
</pre> | |||
Обновите локальный список пакетов: | |||
<pre> | |||
# apt-get update | |||
</pre> | |||
<pre> | |||
Получено: 1 http://sigstore.local . release [1045B] | |||
Получено 1045B за 0s (0B/s). | |||
Найдено http://sigstore.local ./main pkglist | |||
Найдено http://sigstore.local ./main release | |||
Чтение списков пакетов... Завершено | |||
Построение дерева зависимостей... Завершено | |||
</pre> | |||
Проверьте наличие пакетов версий <code>1.27</code>, <code>1.28</code>, <code>...</code>, <code>1.31</code>: | |||
<pre> | |||
# apt-cache search kubernetes | |||
</pre> | |||
<pre> | |||
kubernetes1.27-client - Kubernetes client tools | |||
kubernetes1.27-common - Kubernetes common files | |||
kubernetes1.27-crio - Kubernetes crio files | |||
kubernetes1.27-kubeadm - Kubernetes tool for standing up clusters | |||
kubernetes1.27-kubelet - Kubernetes kubelet daemon | |||
kubernetes1.27-master - Kubernetes services for master host | |||
kubernetes1.27-node - Kubernetes services for node host | |||
... | |||
kubernetes1.31-client - Kubernetes client tools | |||
kubernetes1.31-common - Kubernetes common files | |||
kubernetes1.31-crio - Kubernetes crio files | |||
kubernetes1.31-kubeadm - Kubernetes tool for standing up clusters | |||
kubernetes1.31-kubelet - Kubernetes kubelet daemon | |||
kubernetes1.31-master - Kubernetes services for master host | |||
kubernetes1.31-node - Kubernetes services for node host | |||
``` | |||
==== Настройка доступа к кластеру на worker-узлах ==== | |||
По умолчанию после развертывания worker-узла на нем не инициализируется файл `/root/.kube/config` обеспечивающий доступ к кластеру командой `kubectl`. | |||
Для обновления кластера необходимо скопировать этот файл с одного из `controlPlane` узла. | |||
Для этого: | |||
* на одном из `controlPlane`-узле установите пароль для пользователя `u7s-admin`: | |||
<pre> | |||
# passwd u7s-admin | |||
</pre> | |||
* на всех `worker`-узлах скопируйте config-файл с `controlPlane` узла: | |||
<pre> | |||
# scp u7s-admin@<IP-адрес_controlPlane`_узла>:~u7s-admin/.kube/config /root/.kube/ | |||
</pre> |
Версия от 13:59, 9 января 2025
Описание скриптов обновления kubernetes с версии 1.26
Скрипты обновления rootless kubernetes
Механизм обновления kubernetes-кластера не позволяет проводить обновление узлов кластера с пропуском промежуточных версий. Например, чтобы обновить узлы кластера с минорной версии 1.26
до минорной версии 1.31
необходимо последовательно и синхронизировано обновить узлы через промежуточные версии
1.26 -> 1.27 -> 1.28 -> 1.29 -> 1.30 -> 1.31
.
Причем при обновлении не допускается, чтобы минорные версии всех обновляемых узлов были соседними. Не допусается, например, обновление программного обеспечения узла с версии 1.27
до версии 1.28
, если в кластере есть узлы с версией 1.26
.
Таким образом для обновления узлов кластера с версии 1.26
до версии 1.28
узла кластера должны в рамках локальной сети иметь доступ как к промежуточным версиям RPM-пакетам kubernetes
, так и к промежуточным версиям docker-образов kuberbetes
.
Промежуточные версии RPM-пакетов kubernetes
размещаются на узле с внутренним доменным именем sigstore.local
.
Промежуточные версии docker-образов kuberbetes
размещаются на узле с внутренним доменным именем registry.local
.
Обычно при стандартном разворачивании это один и тот же узел, с которого начиналось разворачивание кластера.
Подготовка узлов кластера без доступа в Интернет для обновления rootless kubernetes
Для обновления kubernetes в сети без доступа в Интернет необходимо наличие следующих архивов:
amd64_27-31_tar.xz
- архив docker-образов всех промежуточных версий;kuberRPMS_1.27-1.31.tgz
rpm-пакетов kubelet, kubeadm, cri-o и зависимых пакетов всех промежуточных версий.
Добавление в локальный регистратор registry.local промежуточных docker образов kubernetes
Файл архива amd64_27-31_tar.xz
необходимо разместить на узле с доменом sigstore.local
в домашнем каталоге пользователя входящим в группуpodman_dev
(обычно это пользователь imagemaker
).
Для выкатывания промежуточных docker-образов в локальный регистратор registry.local
необходимо зайти в пользователя imagemaker
(вход через su- imagemaker
недопускается) и набрать команду разворачивания архива, подписи образов и передачи их в регистратор:
$ podsec-load-sign-oci ./amd64_27-31_tar.xz amd64 <E-mail_подписанта> registry.local/k8s-c10f2
После завершения команды (это может составить несколько минут) проверить наличие добавленных образов на регистраторе можно командой
curl -s http://registry.local/v2/_catalog | jq . { "repositories": [ "k8s-c10f1/..., "k8s-c10f2/coredns", "k8s-c10f2/etcd", "k8s-c10f2/flannel", "k8s-c10f2/flannel-cni-plugin", "k8s-c10f2/kube-apiserver", "k8s-c10f2/kube-controller-manager", "k8s-c10f2/kube-proxy", "k8s-c10f2/kube-scheduler", "k8s-c10f2/pause" ] }
В списке должны присутствовать вышеперечисленные образы с префиксом k8s-c10f2/...
.
Получить список тегов (kubernetes-версий) образов образов можно командой:
curl -s http://registry.local/v2/k8s-c10f2/<имя_образа>/tags/list | jq '.tags | sort'
Например список версий образа kube-apiserver
выглядит следующим образом:
$ curl -s http://registry.local/v2/k8s-c10f2/kube-apiserver/tags/list | jq '.tags | sort' [ "v1.27.16", "v1.28.14", "v1.29.9", "v1.30.5", "v1.31.1" ]
Файл архива amd64_27-31_tar.xz
после успешного размещения образов можно удалить.
Добавление в http-сервер sigstore.local промежуточных kubernetes rpm-пакетов
Для добавления промежуточных kubernetes rpm-пакетов
необходимо на сервере с доменом sistore.local
перейти в каталог /var/sigstore
и развернуть в нем архив kuberRPMS_1.27-1.31.tgz
:
# cd /var/sigstore # tar xvzf .../kuberRPMS_1.27-1.31.tgz dr-xr-xr-x root/root 0 2024-12-22 13:22 ALTLinux/ dr-xr-xr-x root/root 0 2024-12-22 13:22 ALTLinux/base/ -r--r--r-- root/root 74808 2024-12-22 13:22 ALTLinux/base/pkglist.main -r--r--r-- root/root 10628 2024-12-22 13:22 ALTLinux/base/pkglist.main.xz -r--r--r-- root/root 123 2024-12-22 13:22 ALTLinux/base/release.main -r--r--r-- root/root 13117 2024-12-22 13:22 ALTLinux/base/pkglist.main.bz2 -r--r--r-- root/root 1045 2024-12-22 13:22 ALTLinux/base/release dr-xr-xr-x root/root 0 2024-12-22 13:22 ALTLinux/RPMS.main/ -r--r--r-- root/root 8290 2024-12-22 13:22 ALTLinux/RPMS.main/kubernetes1.27-common-1.27.16-alt1.noarch.rpm -r--r--r-- root/root 50665903 2024-12-22 13:22 ALTLinux/RPMS.main/kubernetes1.30-master-1.30.5-alt1.x86_64.rpm ...
Модификация настроек apt для обновления rpm-пакетов
Кроме развертывания промежуточных образов из docker-регистратора registry.local
при обновлении кластера необходимо на всех узлах кластера добавить в apt
доступ к репохторию пакетов промежуточных команд kubelet
, kubeadm
, crctl
, cri-o
, ...
.
Для этого На всех узлах кластера выполните нижеперечисленные операции.
Наберите команду
# apt-repo
и найдите строку начинающуюся с rpm cdrom
:
rpm cdrom:[ALT SP Server 11100-01 x86_64 build 2023-05-29]/ ALTLinux main
Если строка присутствует - удалите ее:
apt-repo rm 'rpm cdrom:[ALT SP Server 11100-01 x86_64 build 2023-05-29]/ ALTLinux main'
Добавьте описание дерева RPM-пакетов
, развернутых на сервере с доменом sigstore.local
и доступных через WEB-сервер на порту 81
:
apt-repo add 'rpm http://sigstore.local:81/ALTLinux . main'
Обновите локальный список пакетов:
# apt-get update
Получено: 1 http://sigstore.local . release [1045B] Получено 1045B за 0s (0B/s). Найдено http://sigstore.local ./main pkglist Найдено http://sigstore.local ./main release Чтение списков пакетов... Завершено Построение дерева зависимостей... Завершено
Проверьте наличие пакетов версий 1.27
, 1.28
, ...
, 1.31
:
# apt-cache search kubernetes
kubernetes1.27-client - Kubernetes client tools kubernetes1.27-common - Kubernetes common files kubernetes1.27-crio - Kubernetes crio files kubernetes1.27-kubeadm - Kubernetes tool for standing up clusters kubernetes1.27-kubelet - Kubernetes kubelet daemon kubernetes1.27-master - Kubernetes services for master host kubernetes1.27-node - Kubernetes services for node host ... kubernetes1.31-client - Kubernetes client tools kubernetes1.31-common - Kubernetes common files kubernetes1.31-crio - Kubernetes crio files kubernetes1.31-kubeadm - Kubernetes tool for standing up clusters kubernetes1.31-kubelet - Kubernetes kubelet daemon kubernetes1.31-master - Kubernetes services for master host kubernetes1.31-node - Kubernetes services for node host ``` ==== Настройка доступа к кластеру на worker-узлах ==== По умолчанию после развертывания worker-узла на нем не инициализируется файл `/root/.kube/config` обеспечивающий доступ к кластеру командой `kubectl`. Для обновления кластера необходимо скопировать этот файл с одного из `controlPlane` узла. Для этого: * на одном из `controlPlane`-узле установите пароль для пользователя `u7s-admin`: <pre> # passwd u7s-admin
- на всех `worker`-узлах скопируйте config-файл с `controlPlane` узла:
# scp u7s-admin@<IP-адрес_controlPlane`_узла>:~u7s-admin/.kube/config /root/.kube/