Показаны сообщения с ярлыком Kubernetes. Показать все сообщения
Показаны сообщения с ярлыком Kubernetes. Показать все сообщения

четверг, 5 сентября 2024 г.

Rancher: Как сбросить забытый пароль для пользователя "admin"?

Если Rancher установлен в контейнере на кластере Kubernetes, для сброса пароля пользователя по умолчанию ("admin"), выполните следующую команду:

kubectl -n cattle-system exec $(kubectl -n cattle-system get pods | grep ^rancher | head -n 1 | awk '{ print $1 }') reset-password


понедельник, 29 июля 2024 г.

Ubuntu: Установка кластера Kubernetes

Для установки и конфигурирования кластера Kubernetes на Ubuntu Linux проделайте следующие шаги:

1. Подготовка хостов для кластера Kubernetes.

1.1 Устанавливаем имя хоста нашей новой ОС Ubuntu:
sudo hostnamectl set-hostname "k8nodename1.mydomain.local"

1.2 Далее редактируем файл "hosts":
sudo nano /etc/hosts

Добавляем все ноды будущего кластера Kubernetes:
192.168.0.11 k8nodename1.mydomain.local k8nodename1
192.168.0.12 k8nodename2.mydomain.local k8nodename2
192.168.0.13 k8nodename3.mydomain.local k8nodename3
192.168.0.14 k8nodename4.mydomain.local k8nodename4
192.168.0.15 k8nodename5.mydomain.local k8nodename5

1.3 Отключаем SWAP-файл:
sudo swapoff -a
sudo sed -ri 's/.*swap.*/#&/' /etc/fstab


1.4 Добавляем параметры ядра Linux:
sudo tee /etc/modules-load.d/k8s.conf <<EOF
overlay
br_netfilter
EOF

Выполняем:
sudo modprobe overlay
Выполняем:
sudo modprobe br_netfilter
Проверяем:
lsmod | egrep "br_netfilter|overlay"

1.5 Конфигурируем параметры sysctl:
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

Применяем без перезагрузки:
sudo sysctl --system
Проверяем, что параметры изменены:
sysctl net.ipv4.ip_forward
sysctl net.bridge.bridge-nf-call-ip6tables
sysctl net.bridge.bridge-nf-call-iptables


2. Установка и конфигурирование ПО Docker и containerd.

2.1 Добавляем официальный GPG-ключ:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc


2.2 Добавляем конфигурацию репозитория в "apt":
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


2.3 Устанавливаем ПО:
sudo apt-get update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin \
docker-compose-plugin

2.4 Проверяем работу Docker, запустим тестовый контейнер:
sudo docker run hello-world

2.5 Конфигурируем "containerd":
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
sudo systemctl restart containerd


3. Установка и конфигурирование ПО Kubernetes.

3.1 Устанавливаем утилиты:
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gpg


3.2 Создаем директорию "/etc/apt/keyrings", если она не существует.
sudo mkdir -p -m 755 /etc/apt/keyrings

3.3 Добавляем официальный GPG-ключ и устанавливаем Kubernetes (версия 1.30):
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key |\
sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

Выполняем:
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] \
https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
Устанавливаем:
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl


3.4 Защищаем от обновления исполняемые файлы:
sudo apt-mark hold kubelet kubeadm kubectl

4. Настройка кластера Kubernetes.

4.1 Инициализируем кластер на мастер-ноде указывая специфический CIDR:
sudo kubeadm init --pod-network-cidr=10.96.0.0/16 --v=5
Если что-то пошло не так и нужно перезапустить весь процесс, сбросьте настройки кластера командой:
sudo kubeadm reset

4.2 После успешного создания кластера для корректной работы утилит под пользователем нужно выполнить команды:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Если вы все делаете под "root", то выполните:
export KUBECONFIG=/etc/kubernetes/admin.conf

4.3 Сгенерируйте следующей командой строку, которой вы сможете добавить остальные ноды в кластер Kubernetes:
sudo kubeadm token create --print-join-command

4.4 Добавьте остальные ноды в кластер с помощью команды, полученной на предыдущем шаге.

4.5 Проверьте настройки кластера и правильность его работы командами:
kubectl get pods -n kube-system
kubectl get nodes
kubectl get all -A
kubectl cluster-info
Посмотреть логи в реальном времени можно командой:
tail -f /var/log/syslog

4.6 В том случае, если вы хотите запускать рабочие контейнеры и на мастер-ноде, выполните следующую команду:
sudo kubectl taint nodes --all node-role.kubernetes.io/control-plane-

5. Настройка сетевого плагина Calico.

5.1 Выполняем установку (версия 3.28.0):
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/calico.yaml

5.2 Проверяем, что контейнеры "calico-" запускаются на каждой ноде кластера:
kubectl get pods -n kube-system

6. Пробный запуск приложения на кластере Kubernetes.

6.1 Создаем деплоймент "nginx":
kubectl create deployment nginx-app --image=nginx --replicas=2

6.2 Проверяем запущенные контейнеры "nginx-app":
kubectl get deployment nginx-app

6.3 Публикуем порт контейнера на ip адрес ноды:
kubectl expose deployment nginx-app --type=NodePort --port=80

6.4 Смотрим на каком порту ноды опубликован "nginx-app":
kubectl get svc nginx-app
Или:
kubectl describe svc nginx-app

6.5 С помощью утилиты "curl" проверяем доступность сервиса снаружи (где 30718 - порт ноды с опубликованным "nginx-app"):
curl http://node_ip_address:30718
Если получаем ответ от сервера в формате "Welcome to nginx!", то проверка выполнена успешно.