Если Rancher установлен в контейнере на кластере Kubernetes, для сброса пароля пользователя по умолчанию ("admin"), выполните следующую команду:
Показаны сообщения с ярлыком Kubernetes. Показать все сообщения
Показаны сообщения с ярлыком Kubernetes. Показать все сообщения
четверг, 5 сентября 2024 г.
Rancher: Как сбросить забытый пароль для пользователя "admin"?
понедельник, 29 июля 2024 г.
Ubuntu: Установка кластера Kubernetes
Для установки и конфигурирования кластера Kubernetes на Ubuntu Linux проделайте следующие шаги:
1.1 Устанавливаем имя хоста нашей новой ОС Ubuntu:
sudo hostnamectl set-hostname "k8nodename1.mydomain.local"
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.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] \
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
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.
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 \
$(. /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":
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.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] \
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.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 Проверьте настройки кластера и правильность его работы командами:
Устанавливаем:
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-
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
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.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"):
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!", то проверка выполнена успешно.
Если получаем ответ от сервера в формате "Welcome to nginx!", то проверка выполнена успешно.
Подписаться на:
Сообщения (Atom)