No name

Links

GitHub
Шпаргалка по kubernetes (Debian 11)

Шпаргалка по kubernetes (Debian 11)


visibility187 2022-09-11 18:52:04
Задачи:
1) Установить Kubernetes
2) Создать конфигурацию, состоящую из Deploymen, HorizontalPodAutoscaler, Service, ConfigMap


Нужно создать на DNS сервере или в файле hosts соответствия, на примере таких:
192.168.254.10 c1-control-plane
192.168.254.11 c1-worker-1
192.168.254.12 c1-worker-2

Загружаем необходимые модули и делаем необходимые настройки
$cat << EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
$cat << EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

Отключаем swap – это требуется для кубика
sudo sed -i '/swap/d' /etc/fstab
$swapoff -a

Применяем новые настройки или перезагружаем сервер
$modprobe overlay
$modprobe br_netfilter
$sysctl –system

Устанавливаем NTP сервер
$apt install -y chrony

Устанавливаем containerd
$apt install -y curl gpg lsb-release apparmor apparmor-utils
$curl -fsSL https://download.docker.com/linux/debian/gpg |  gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
$echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
$apt update
$apt-get install -y containerd.io
$mkdir -p /etc/containerd
$containerd config default | tee /etc/containerd/config.toml

Редактируем файл /etc/containerd/config.toml
Добавляем параметр SystemdCgroup = true к [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] чтобы получилось
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true

$ systemctl restart containerd

Установка главных компонентов
$apt-get install -y apt-transport-https ca-certificates curl
$curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
$echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | tee /etc/apt/sources.list.d/kubernetes.list
$apt-get update
$apt install iptables libiptc0/stable libxtables12/stable
$apt-get install -y kubelet=1.21.0-00 kubeadm=1.21.0-00 kubectl=1.21.0-00
$apt-mark hold kubelet kubeadm kubectl

Следующие команды запускаются только на Мастер-сервере
$kubeadm init --pod-network-cidr 172.20.0.0/16 --kubernetes-version 1.21.0
$mkdir -p $HOME/.kube
$cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$chown $(id -u):$(id -g) $HOME/.kube/config
$kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

Вывод команды исполняем на worker сервере
$kubeadm token create --print-join-command

$kubectl get nodes



Основные команды:
Показать список подов
$kubectl get pods
Показать список всех подов
$kubectl get pods -A
Отображать состояние подов в интерактивном режиме
$kubectl get pods -w
Вывод событий кластера
$kubectl get events -w
Создать под с портом 80 и образом nginx:latest
$kubectl run hello –image=nginx:latest –port=80
Вывод подробной информации о поде
$kubectl describe pods hello 
Вывести журнал событий пода, если в контейнере указан tail будет отображаться он
$kubectl logs hello
Вход в контейнер
$kubectl exec it hello bash
Применение манифеста из файла
$kubectl apply -f hello.yaml
Удаление манифеста из фала
$kubectl delete -f hello.yaml
Отобразить список развертываний
$kubectl get deploy
Вывести список реплик
$kubectl get rs
Создание развертывания
$kubectl create deploy hello –image nginx:latest
Вывод описания развертывания
$kubectl describe deploy hello
Создание нескольких копий
$kubectl scale deploy hello –replicas 4
Настройка автомасштабирования
$kubectl autoscale deploy hello –min=10 –max=15 –cpu-percent=80
Вывод информации по после команды выше
$kubectl get hpa
Замена образа в развертывании
$kubectl set image deploy/hello nginx=httpd:latest –record
Вывод статуса обновления
$kubectl rollout status deploy/hello
Вывод список хранимых копий
$kubectl rollout history deploy/hello
Отменить последнее обновление
$kubectl rollout undo deploy/hello
Откат к определенной версии
$kubectl rollout undo deploy/hello –to-version=3
Обновление образа из репозитория
$kubectl rollout restart deploy/hello
Удаление развертывания
$kubectl delete deploy hello
Создание сервиса 
$kubectl expose deploy hello –type=ClusterIP/NodePort/LoadBalancer –port 80


Пример конфига, php-my-admin нужно заменить
apiVersion : apps/v1
kind: Deployment
metadata:
  name: php-my-admin-deployment-autoscaling
  labels:
    app : php-my-admin-deployment
spec:
  selector:
    matchLabels:
      project: php-my-admin
  template:
    metadata:
      labels:
        project: php-my-admin   # Service will look for those PODS Labels!!!
    spec:
      containers:
        - name : php-my-admin-web
          image: h963z57/phpmyadmin:main
          imagePullPolicy: "Always"
          ports:
            - containerPort: 80 
          volumeMounts:
          - name: config-php-my-admin
            mountPath: /mnt
      volumes:
      - name: config-php-my-admin
        configMap:
          name: php-my-admin-configmap
---
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: php-my-admin-autoscaling
spec:
  scaleTargetRef:
    apiVersion: apps/v2beta1v1
    kind: Deployment
    name: php-my-admin-deployment-autoscaling
  minReplicas: 1
  maxReplicas: 2
  metrics:
  - type: Resource
    resource:
      name: cpu
      targetAverageUtilization: 70
  - type: Resource
    resource:
      name: memory
      targetAverageUtilization: 80
---
apiVersion: v1
kind: Service
metadata:
  name: php-my-admin-autoscaling-pod-service
  labels:
     env  : prod
     owner: h963z57
spec:
  selector:
    project: php-my-admin      # Selecting PODs with those Labels
  ports:
    - name      : app-listener
      protocol  : TCP
      port      : 80  # Port on Load Balancer
      targetPort: 80  # Port on Pod
      nodePort: 30007
#  clusterIP: 10.105.214.244
  type: NodePort
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: php-my-admin-configmap
data:
  config.inc.php: |
    <Указываем текст конфигурационного файла>


Источники:
1) Create a Debian 11 kubernetes cluster with kubeadm

https://www.oueta.com/linux/create-a-debian-11-kubernetes-cluster-with-kubeadm/

2) deploy kubernetes cluster on debian 11 with containerd

https://www.hostafrica.ng/blog/servers/kubernetes-cluster-debian-11-containerd/

Back