Cree un clúster k8s en Ubuntu18 e implemente una aplicación simple nigx 2019/10/9

Se construyen tres nodos en la máquina virtual local, todos operando en Ubuntu. Principalmente para la conveniencia de la autograbación y uso posterior.
Prueba Pro disponible

Inicialice el entorno de compilación e inicialice el nodo maestro, agregue otros nodos al clúster *****
Configure docker y k8s en el nodo maestro y otros nodos, pero el nodo maestro debe inicializarse y agregue complementos de red.
Al principio, debe desactivar el firewall, desactivar el intercambio, desactivar selinux y otras preparaciones.

1: apague el firewall
sudo ufw deshabilite

2: intercambio cercano

 sudo swapoff -a     #这个只是暂时关闭,重启后失效
 sudo vim /etc/fstab   #通过修改配置文件,彻底关闭
# 注释掉swapfile这一行

3: Cerrar selinux

 sudo vim /etc/selinux/config   #通过修改配置文件
 SELINUX=disabled

4: Modifique el nombre del host a un nombre reconocido. Puede configurarlo a través de la línea de comando o usted mismo. Opcional

5: Instale algunas herramientas básicas, como: vim, curl, etc.

sudo apt update && \
sudo apt -y upgrade && \
sudo apt install -y vim \
curl \
apt-transport-https \
ca-certificates \
software-properties-common

6: Cambiar el servicio dns provisional, no configure esto por el momento

$ sudo apt install -y unbound
$ sudo systemctl stop systemd-resolved
$ sudo systemctl disable systemd-resolved
$ sudo rm -rf /etc/resolv.conf
$ sudo vim /etc/NetworkManager/NetworkManager.conf
 # 在[main]下面添加
 dns=unbound
# 重启生效
$ reboot

7: Configure el reenvío de paquetes para no configurar esto temporalmente

sudo vim /etc/sysctl.conf    #修改配置文件,往文件中添加东西
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

Hacer que la configuración sea efectiva, pero no válida después de reiniciar

sudo modprobe br_netfilter
 sudo sysctl -p

Establecer para cargar automáticamente br_netfilter en el arranque

 sudo vim /etc/init.d/load_br_netfilter.sh
  #!/bin/bash
  ### BEGIN INIT INFO
  # Provides:       svnd.sh
  # Required-Start: $local_fs $remote_fs $network $syslog
  # Required-Stop:  $local_fs $remote_fs $network $syslog
  # Default-Start:  2 3 4 5
  # Default-Stop:   0 1 6
  # Short-Description: starts the svnd.sh daemon
  # Description:       starts svnd.sh using start-stop-daemon
  ### END INIT INFO
  sudo modprobe br_netfilter

 sudo chmod 775 /etc/init.d/load_br_netfilter.sh
 sudo update-rc.d load_br_netfilter.sh defaults 90

Si desea cancelar el arranque, cargue automáticamente el módulo

$ sudo update-rc.d -f load_br_netfilter.sh remove

El primer paso: primero instale docker
1: primero desinstale la versión anterior que pueda existir

 sudo apt-get remove docker docker-engine docker-ce docker.io

2: Actualice el índice del paquete apt:

sudo apt-get update

3: Instale los siguientes paquetes para que apt pueda usar el repositorio a través de HTTPS

 sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

4: Agregue la clave oficial Docker GPG:

 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

5: Use el siguiente comando para configurar el repositorio estable:

 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

6: Actualice el índice del paquete apt:

 sudo apt-get update

7: Lista de versiones disponibles:

 apt-cache madison docker-ce

8: Instalar la versión especificada

sudo apt-get install docker-ce=18.06.3~ce~3-0~ubuntu

9: compruebe si se inicia el estado de la ventana acoplable

systemctl status docker

Si no comenzó, comience

sudo systemctl start docker

Stop docker

sudo systemctl stop docker 

Configurar Docker para que se inicie automáticamente

systemctl enable docker.service

10: Verifique que sea normal

sudo docker run hello-world

Paso 2: compila el entorno
1 de k8s : configura el origen

 sudo curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
 sudo tee /etc/apt/sources.list.d/kubernetes.list <<-'EOF'
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
EOF

Actualizar índice

$ sudo apt update

Ver versiones disponibles

apt-cache madison kubeadm

2: Instalar la versión especificada

sudo apt install -y kubelet=1.15.0-00 kubeadm=1.15.0-00 kubectl=1.15.0-00
sudo apt-mark hold kubelet=1.15.0-00 kubeadm=1.15.0-00 kubectl=1.15.0-00

3: configura el arranque para que se inicie automáticamente

sudo systemctl enable kubelet && sudo systemctl start kubelet

4: Inicializar el nodo maestro

Esto puede ser usado

kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.15.0 --pod-network-cidr=10.244.0.0/16

Si no, prueba esto

kubeadm init --kubernetes-version=1.15.0 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap

5: Regenere la información del token, que generalmente se ejecuta cuando necesita caducar después de 12 horas.

kubeadm token create --print-join-command

6: Instale el complemento de red de franela CNI: si no instala el complemento de red, el estado del nodo maestro es NoReady.
Antes de instalar el complemento de red, debe configurarlo, de lo contrario informará: La conexión al servidor localhost: 8080 fue rechazada

 mkdir -p $HOME/.kube
 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 sudo chown $(id -u):$(id -g) $HOME/.kube/config

Si no se realiza esta operación, los nodos de obtención de kubectl también informarán un error

Esto puede ser usado

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

Si no puede usarlo, intente esto

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Hasta ahora, el entorno k8s se ha configurado básicamente y el nodo maestro también se ha inicializado. El siguiente paso es dejar que otros nodos se unan al clúster.

Después de reiniciar el nodo, asegúrese de cerrar el intercambio, ejecutar el comando de reinicio y luego ir al clúster de unión.

7: Ejecute el comando de token generado por el nodo maestro en otros nodos.

Cabe señalar aquí: además del nodo maestro necesita instalar docker y kubectl, kubeadm, kubelet. También deben instalarse otros nodos, y deben instalarse de la misma manera.
Por ejemplo: ejecutar esto en otros nodos

kubeadm join 192.168.172.134:6443 --token 1ly6ta.omqv3bkurfomxw0j     --discovery-token-ca-cert-hash sha256:d65642726224dfdf52ccd8af1e9fc1ca30ad201e4b03a14ebd327d7f60abf1c8

8: el nodo que se unió al clúster antes, si desea volver a unirse al clúster más adelante, debe ejecutar el
kubeadm resetcomando; de lo contrario, obtendrá un error

Nota: recuerde algunos errores y soluciones comunes. Si informa un error, debe aprender a leer el error informado por la consola. ! ! ! !
1) El estado del nodo recién agregado es NotReady, la solución es:
reiniciar el daemon, docker y kuberlet de cada nodo de nodo

 systemctl daemon-reload
 systemctl restart docker
 systemctl restart kubelet

Última ejecución

kubeadm reset

Finalmente, ¡únete al clúster
para resolver!

2) k8s elimina un nodo

kubectl delete node nodename

De hecho, este comando es universal y puede eliminar cualquier tipo.

kubectl delete type typename

tipo es el tipo de recurso, que puede ser nodo, pod, rs, rc, implementación, servicio, etc. typename es el nombre de este recurso.

Nota: No importa qué nodo esté en el futuro, siempre que se reinicie, el maestro irá a ver si el estado de docker y kubelet es normal, y ejecutará kubectl get nodos para
mostrar la información del nodo. Otros nodos van a ver si la ventana acoplable es normal. En segundo lugar, si hay un problema, si desea volver a unirse al clúster, primero debe reiniciar: kubeadm reset

En Ubuntu, algunas operaciones comúnmente utilizadas para modificar el archivo de configuración a través del terminal:
1: Use el comando vim para ingresar un archivo de configuración, es decir, insertar. Si desea guardar y salir, esc, luego: wq, guardar y salir.
2: Establecer chino, hora, sin pantalla de bloqueo, todo en la configuración.

Implemente una aplicación simple en el clúster ****** Implementación simple
de nigx
1:creeuna implementación en el nodo maestro

kubectl create deployment nginx --image=nginx

Vista

kubectl get deployments

2: crear un servicio

kubectl create service nodeport nginx --tcp 80:80

Vista

kubectl get svc

3: Ejecute el siguiente comando en el nodo esclavo para verificar si nginx se implementa correctamente.
curl localhost:30601
# El número de puerto aquí depende del número de puerto real después de su implementación

O
curl kube-slave:30601
# aquí kube-slave es el nombre de host del nodo, que es lo que node1, node2 ...

Abra el navegador e ingrese: localhost: número de puerto o nombre de host del nodo: número de puerto para acceder a la página nigx normalmente.

13 artículos originales publicados · Me gusta1 · Visita 2006

Supongo que te gusta

Origin blog.csdn.net/qq_31152023/article/details/102455601
Recomendado
Clasificación