Kubernetes es un sistema de orquestación de contenedores de código abierto para automatizar la implementación, el escalado y la administración de aplicaciones informáticas.
Antes de comenzar, asegúrese de que su software esté actualizado
sudo apt apdate
sudo apt upgrade
Instalar
Instale los siguientes paquetes en todas sus máquinas:
kubeadm
:el comando para arrancar el clúster.kubelet
:el componente que se ejecuta en todas las máquinas de su clúster y hace cosas como iniciar POD y contenedores.kubectl
:la línea de comando útil para hablar con su clúster.
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
Confirmar versiones instaladas
kubectl version --client
kubeadm version
Salida:
[email protected]:~$ kubectl version --client
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.0", GitCommit:"c2b5237ccd9c0f1d600d3072634ca66cefdf272f", GitTreeState:"clean", BuildDate:"2021-08-04T18:03:20Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"linux/amd64"}
[email protected]:~$ kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.0", GitCommit:"c2b5237ccd9c0f1d600d3072634ca66cefdf272f", GitTreeState:"clean", BuildDate:"2021-08-04T18:02:08Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"linux/amd64"}
Desactiva el intercambio.
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo swapoff -a
Configurar sistema.
sudo modprobe overlay
sudo modprobe br_netfilter
sudo tee /etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
Instalar tiempo de ejecución Containerd Container
sudo apt-get install -y containerd
Configurar containerd e iniciar el servicio
sudo mkdir -p /etc/containerd
sudo containerd config default > /etc/containerd/config.toml
Habilite el servicio para que se inicie en el arranque y comience
sudo systemctl enable --now containerd
# check status
sudo systemctl status containerd
El servicio debería estar ejecutándose
containerd.service - containerd container runtime
Loaded: loaded (/lib/systemd/system/containerd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-08-04 20:27:51 UTC; 7min ago
Docs: https://containerd.io
Main PID: 8159 (containerd)
Tasks: 12
Memory: 23.3M
CGroup: /system.slice/containerd.service
└─8159 /usr/bin/containerd
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.784407330Z" level=info msg="loading plugin \"io.containerd.grpc>
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.785605392Z" level=info msg=serving... address=/run/containerd/c>
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.785639559Z" level=info msg=serving... address=/run/containerd/c>
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.787585658Z" level=info msg="containerd successfully booted in 0>
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.801146245Z" level=info msg="Start subscribing containerd event"
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.804843058Z" level=info msg="Start recovering state"
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.805094249Z" level=info msg="Start event monitor"
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.805193238Z" level=info msg="Start snapshots syncer"
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.805282655Z" level=info msg="Start cni network conf syncer"
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.805369362Z" level=info msg="Start streaming server"
Inicializar nodo maestro
Habilite e inicie el servicio kubelet.
sudo systemctl enable --now kubelet
Extraer imágenes de contenedor requeridas:
sudo kubeadm config images pull
Establezca el nombre DNS del extremo del clúster o agregue un registro a /etc/hosts
archivo.
192.168.20.7 k8s.citizix.local
Crear clúster:
sudo kubeadm init \
--pod-network-cidr=192.168.0.0/16 \
--control-plane-endpoint=k8s.citizix.local
Cuando haya terminado, los k8 deberían estar en funcionamiento. Obtenga el archivo de administración de kubeconfig desde esta ruta /etc/kubernetes/admin.conf
mkdir ~/.kube
sudo cp /etc/kubernetes/admin.conf ~/.kube/admin.conf
sudo chown ${USER}.${GROUP} ~/.kube/admin.conf
chmod 400 ~/.kube/admin.conf
Comprobar el estado del clúster:
kubectl cluster-info
Confirme que el nodo principal está listo:
kubectl get nodes -o wide
Se pueden agregar nodos maestros adicionales usando el comando en el resultado de la instalación:
kubeadm join k8s-cluster.computingforgeeks.com:6443 --token sr4l2l.2kvot0pfalh5o4ik \
--discovery-token-ca-cert-hash sha256:c692fb047e15883b575bd6710779dc2c5af8073f7cab460abd181fd3ddb29a18 \
--control-plane
Añadir nodos trabajadores
Con el plano de control listo, puede agregar nodos trabajadores al clúster para ejecutar cargas de trabajo programadas.
Si la dirección del punto final no está en el DNS, agregue el registro a /etc/hosts.
$ sudo vim /etc/hosts
192.168.20.7 k8s.citizix.local
El comando de unión que se proporcionó se usa para agregar un nodo trabajador al clúster.
kubeadm join k8s-cluster.computingforgeeks.com:6443 \
--token sr4l2l.2kvot0pfalh5o4ik \
--discovery-token-ca-cert-hash sha256:c692fb047e15883b575bd6710779dc2c5af8073f7cab460abd181fd3ddb29a18
Ejecute el siguiente comando en el plano de control para ver si el nodo se unió al clúster.
kubectl get nodes
Implementar aplicación en clúster