Проверка работоспособности установки#
Установка и развертывание кластера DropApp#
Предварительные условия#
Предварительные условия установки и развертывания кластера DropApp:
пользователь имеет роль администратора в ОС;
пользователем получен zip-архив с дистрибутивом DropApp.
Установка и развертывание#
Установка и развертывание кластера DropApp:
Установите инструменты DropApp и обновите данные при помощи команды:
sudo yum install kubelet kubeadm cri-o kubectlРезультат команды будет содержать в конце следующее сообщение:
complete!Активируйте и запустите службы CRI-O и kubelet:
sudo systemctl enable --now crio kubeletРезультат команды будет следующим:
Created symlink /etc/systemd/system/cri-o.service → /usr/lib/systemd/system/crio.service. Created symlink /etc/systemd/system/multi-user.target.wants/crio.service → /usr/lib/systemd/system/crio.service. Created symlink /etc/systemd/system/multi-user.target.wants/kubelet.service → /usr/lib/systemd/system/kubelet.service.Подготовьте конфигурацию с указанием репозитория DropApp для создания кластера, при помощи команды:
nano clusterconfig.ymlДобавьте в YAML-файл параметры конфигурации.
Для Platform V Sberlinux OS Server и Platform V Sberlinux OS Core:
apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration kubernetesVersion: v1.25.11 imageRepository: example.ru/1.5.0/dapp-kubernetes-2 # <--- репозиторий в registry, где лежат образы kube-apiserver, kube-proxy, kube-controller-manager, kube-scheduler dns: imageRepository: example.ru/1.5.0/dapp-coredns-2 # <--- репозиторий в registry, где лежит образ coredns. imageRepository является изменяемым параметром и может быть изменен в соответствии с docker repository imageTag: v1.9.3 etcd: local: imageRepository: example.ru/1.5.0/dapp-etcd-2 # <--- репозиторий в registry, где лежит образ etcd imageTag: 3.5.6 networking: serviceSubnet: "00.00.00.0/16" # Подсеть для services адресов внутри кластера. Адрес должен быть изменен в соответствии с сетевыми настройками podSubnet: "00.0.00.00/16" # подсеть для pods адресов внутри кластера. Адрес должен быть изменен в соответствии с сетевыми настройками --- apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration cgroupDriver: systemd --- apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration metricsBindAddress: "0.0.0.0" mode: "ipvs"Примечание
Конфигурация является тестовой и приведена в качестве примера проверки работоспособности.
Нажмите сочетание клавиш Ctrl + X для сохранения.
На вопрос:
Save modified buffer?введите Y для подтверждения действия и нажмите Enter для выхода.Запустите создание кластера:
sudo kubeadm init --config clusterconfig.ymlРезультат команды будет следующим:
[init] Using Kubernetes version: [preflight] Running pre-flight checks [WARNING SystemVerification]: missing optional cgroups: blkio [preflight] Pulling images required for setting up a Kubernetes cluster [preflight] This might take a minute or two, depending on the speed of your internet connection [preflight] You can also perform this action in beforehand using 'kubeadm config images pull' [certs] Using certificateDir folder "/etc/kubernetes/pki" [certs] Generating "ca" certificate and key [certs] Generating "apiserver" certificate and key [certs] apiserver serving cert is signed for DNS names [control-plane kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [000.000.000.001, 000.000.000.0000] [certs] Generating "apiserver-kubelet-client" certificate and key [certs] Generating "front-proxy-ca" certificate and key [certs] Generating "front-proxy-client" certificate and key [certs] Generating "etcd/ca" certificate and key [certs] Generating "etcd/server" certificate and key [certs] etcd/server serving cert is signed for DNS names [control-plane localhost] and IPs [000.000.000.000 000.0.0.0 ::1] [certs] Generating "etcd/peer" certificate and key [certs] etcd/peer serving cert is signed for DNS names [control-plane localhost] and IPs [000.000.000.000 000.0.0.0 ::1] [certs] Generating "etcd/healthcheck-client" certificate and key [certs] Generating "apiserver-etcd-client" certificate and key [certs] Generating "sa" key and public key [kubeconfig] Using kubeconfig folder "/etc/kubernetes" [kubeconfig] Writing "admin.conf" kubeconfig file [kubeconfig] Writing "kubelet.conf" kubeconfig file [kubeconfig] Writing "controller-manager.conf" kubeconfig file [kubeconfig] Writing "scheduler.conf" kubeconfig file [kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env" [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml" [kubelet-start] Starting the kubelet [control-plane] Using manifest folder "/etc/kubernetes/manifests" [control-plane] Creating static Pod manifest for "kube-apiserver" ... [bootstrap-token] Using token: 6m07w8.jgdd2w752py6ljwp [bootstrap-token] Configuring bootstrap tokens, cluster-info ConfigMap, RBAC Roles [bootstrap-token] Configured RBAC rules to allow Node Bootstrap tokens to get nodes [bootstrap-token] Configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials [bootstrap-token] Configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token [bootstrap-token] Configured RBAC rules to allow certificate rotation for all node client certificates in the cluster [bootstrap-token] Creating the "cluster-info" ConfigMap in the "kube-public" namespace [kubelet-finalize] Updating "/etc/kubernetes/kubelet.conf" to point to a rotatable kubelet client certificate and key [addons] Applied essential addon: CoreDNS Your Kubernetes control-plane has initialized successfully! To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config Alternatively, if you are the root user, you can run: export KUBECONFIG=/etc/kubernetes/admin.conf You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/ Then you can join any number of worker nodes by running the following on each as root: kubeadm join 000.000.000.000:6443 --token 6m07w8.jgdd2w752py6ljwp \ --discovery-token-ca-cert-hash sha256:4cc8eb60476c33edac52b5a7548c2c50ef0f9e31ce656c6f4b213f901bc87421:890128 # приведенное в примере значение токена и SHA256 являются вымышленным, при каждой установке DropApp должны использоваться уникальные значения токенов.Примечание
Адреса 000.000.000.000 и 000.0.0.0 в блоке вывода будут действительными IP узлов кластера.
Убедитесь, что вывод предыдущей команды содержит сообщение: Your Kubernetes control-plane has initialized successfully!
Для взаимодействия с кластером, выполните команды на главном узле и создайте файловую структуру:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/configСгенерируйте ключ сертификата (token) на главном узле при помощи команды:
kubeadm token create --print-join-commandРезультат команды будет следующим:
kubeadm join 000.000.122.76:6443 --token 2xqf30.qe81qi7vhi32pnxk --discovery-token-ca-cert-hash sha256:000fg67i8669860687589907erw9000Примечание
IP токен и порт приведены для примера.
Скопируйте token и хеш SHA256, необходимые для безопасной связи с главным узлом.
Примечание
Сохраните результат (например, в специальную папку или репозиторий) выполненной команды для дальнейшего использования на всех подключенных рабочих узлах.
Переключитесь на рабочий узел (worker) и выполните команду:
sudo hostnamectl set-hostname #[имя-машины, например worker1]Примечание
Эту команду требуется выполнить на каждом рабочем узле.
Установите инструменты DropApp и обновите данные при помощи команды:
sudo yum install kubelet kubeadm cri-o kubectlРезультат команды будет содержать в конце следующий вывод:
Complete!Примечание
Все экземпляры пакета, установленные на виртуальные машины, должны быть одной и той же версии и соответствовать ранее установленной версии на главном узле управляющего слоя (control-plane node).
sudo systemctl enable --now crio kubeletРезультат команды будет следующим:
Created symlink /etc/systemd/system/cri-o.service → /usr/lib/systemd/system/crio.service. Created symlink /etc/systemd/system/multi-user.target.wants/crio.service → /usr/lib/systemd/system/crio.service. Created symlink /etc/systemd/system/multi-user.target.wants/kubelet.service → /usr/lib/systemd/system/kubelet.service.Присоедините рабочий узел к кластеру DropApp (совокупности рабочих и главных узлов, объединенных в одну сеть) при помощи команды:
sudo [результат шага №12]Пример выполняемой команды представлен ниже:
sudo kubeadm join 000.000.122.76:6443 --token 2xqf30.qe81qi7vhi32pnxk --discovery-token-ca-cert-hash sha256:fee9d001d8897cd5f59ace0be36d344dda65edc4bf38b993267ad6a3c2aee3caПримечание
IP токен и порт приведены для примера.
Результат команды будет следующим:
... [kubelet-start] Starting the kubelet [kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap... This node has joined the cluster: * Certificate signing request was sent to apiserver and a response was received. * The Kubelet was informed of the new secure connection details. Run 'kubectl get nodes' on the control-plane to see this node join the cluster.Проверьте, что рабочие узлы присоединились к главному узлу. По умолчанию их количество будет равным двум (см. в разделе Системные требования). Переключитесь на главный узел по ssh и выполните команду:
kubectl get nodesРезультат команды будет следующим:
NAME STATUS ROLES AGE VERSION control-plane Ready control-plane 5m14s worker1 Ready <none> 58s worker2 Ready <none> 65s