Установка K3s на Oracle Linux
Гид по установке K3s на Oracle Linux 9 в двунодовой конфигурации: сервер управления (control plane) и сервер обработки нагрузки (worker).
Схема
Построим решение, как на схеме ниже: один сервер управления кластером, один агент. При этом настроим так, чтобы контейнеры запускались только на второй ноде.
Архитектура K3s
Подготовка Oracle Linux
Настройки ниже применяем и к серверу, и к агенту.
Отключаем nm-cloud-setup:
systemctl disable nm-cloud-setup.service nm-cloud-setup.timer
Добавляем сервисы в firewalld:
firewall-cmd --permanent --new-service=k3s
firewall-cmd --permanent --service=k3s --set-description="K3s supervisor and Kubernetes API Server"
firewall-cmd --permanent --service=k3s --add-port=6443/tcp
firewall-cmd --permanent --new-service=kube-metric
firewall-cmd --permanent --service=kube-metric --set-description="Kubernetes Kubelet metrics"
firewall-cmd --permanent --service=kube-metric --add-port=10250/tcp
firewall-cmd --permanent --new-service=flannel-vxlan
firewall-cmd --permanent --service=flannel-vxlan --set-description="Kubernetes Flannel VXLAN"
firewall-cmd --permanent --service=flannel-vxlan --add-port=8472/udp
Добавляем доверенные подсети:
firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16
firewall-cmd --permanent --zone=trusted --add-source=10.43.0.0/16
Установка K3s Server
Донастраиваем межсетевой экран:
firewall-cmd --permanent --zone=public --add-service=k3s
firewall-cmd --permanent --zone=public --add-service=kube-metric
firewall-cmd --permanent --zone=public --add-service=flannel-vxlan
firewall-cmd --reload
Скачиваем установщик, делаем исполняемым:
wget https://get.k3s.io -O k3s.sh
chmod u+x k3s.sh
Создаём конфигурацию — включаем SELinux, запрещаем планировать запуск контейнеров на ноде управления, отключаем ненужные функции:
mkdir -p /etc/rancher/k3s
echo \
'disable-cloud-controller: true
servicelb: false
traefik: false
selinux: true
node-taint: node-role.kubernetes.io/master=true:NoSchedule' \
> /etc/rancher/k3s/config.yaml
Устанавливаем K3s server:
INSTALL_K3S_VERSION='v1.26.0+k3s1' ./k3s.sh server
Смотрим токен для агента:
cat /var/lib/rancher/k3s/server/node-token
Установка K3s Agent
Донастраиваем межсетевой экран:
firewall-cmd --permanent --zone=public --add-service=kube-metric
firewall-cmd --permanent --zone=public --add-service=flannel-vxlan
firewall-cmd --reload
Создаём конфигурацию - вписываем адрес сервера и токен:
mkdir -p /etc/rancher/k3s
echo \
'server: https://10.11.12.13:6443
token: K10c...602b::server:1b10...f476
selinux: true' \
> /etc/rancher/k3s/config.yaml
Скачиваем установщик, делаем исполняемым:
wget https://get.k3s.io -O k3s.sh
chmod u+x k3s.sh
Устанавливаем K3s agent:
INSTALL_K3S_VERSION='v1.26.0+k3s1' ./k3s.sh agent
IPv6-only конфигурация
Добавляем доверенные подсети:
firewall-cmd --permanent --zone=trusted --add-source=2001:cafe:42::/96
firewall-cmd --permanent --zone=trusted --add-source=2001:cafe:43::/112
Создаём конфигурацию — включаем SELinux, задаём кластерные подсети и включаем NAT:
mkdir -p /etc/rancher/k3s
echo \
'disable-cloud-controller: true
selinux: true
cluster-cidr:
- 2001:cafe:42::/96
service-cidr:
- 2001:cafe:43::/112
kube-controller-manager-arg: node-cidr-mask-size=112
flannel-ipv6-masq: true' \
> /etc/rancher/k3s/config.yaml
Устанавливаем K3s:
INSTALL_K3S_VERSION='v1.28.4+k3s2' ./k3s.sh
Если сервис не стартует с ошибкой
level=fatal msg="starting kubernetes: preparing server: failed to normalize token; must be in format K10<CA-HASH>::<USERNAME>:<PASSWORD> or <PASS>
то удаляем файл /var/lib/rancher/k3s/server/token и перезапускаем сервис.
Dual-stack конфигурация
Добавляем доверенные подсети:
firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16
firewall-cmd --permanent --zone=trusted --add-source=10.43.0.0/16
firewall-cmd --permanent --zone=trusted --add-source=2001:cafe:42::/96
firewall-cmd --permanent --zone=trusted --add-source=2001:cafe:43::/112
Создаём конфигурацию — включаем SELinux, задаём кластерные подсети и включаем NAT:
mkdir -p /etc/rancher/k3s
echo \
'disable-cloud-controller: true
selinux: true
node-ip: 233.252.0.10,2001:db8::10
cluster-cidr: 10.42.0.0/16,2001:cafe:42::/96
service-cidr: 10.43.0.0/16,2001:cafe:43::/112
kube-controller-manager-arg: node-cidr-mask-size-ipv6=112
kubelet-arg: node-ip=233.252.0.10,2001:db8::10
flannel-ipv6-masq: true
' \
> /etc/rancher/k3s/config.yaml
233.252.0.10 и 2001:db8::10 - IPv4 и IPv6 адреса ноды соответственно.
Устанавливаем K3s:
INSTALL_K3S_VERSION='v1.28.4+k3s2' ./k3s.sh