Centos7 crea un clúster maestro único de Kubernetes

Imprimir

La versión de Kubernetes es 1.18.0

La versión de Docker es docker-ce-19.03.12

Planificación de tres máquinas

La máquina zjj101 es el nodo maestro,
zjj102 y zjj103 son los nodos del nodo

Trabajo previo

Cerrar selinux

Las tres máquinas están apagadas

Dos caminos:

Método 1 Permanente:

 sed -i 's/enforcing/disabled/' /etc/selinux/config

Método 2 Cierre temporal

setenforce 0 # Temporal

Cerrar intercambio

Las tres máquinas están apagadas

Cerrado permanentemente

echo "vm.swappiness = 0">> /etc/sysctl.conf 

Apaga el cortafuegos

Las tres máquinas están apagadas

La cadena que pasa el tráfico IPv4 en puente a iptables

Las tres máquinas están configuradas

Simplemente cópielo directamente en la terminal de shell y presione enter

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

Ejecute en tres máquinas, haga que las tres máquinas surtan efecto, simplemente cópielo en el terminal de shell y presione enter.

sysctl --system 

Sincronización horaria, para que las tres máquinas tengan la misma hora.

Configurar ventana acoplable

K8s depende de Docker

Instale Docker en tres máquinas

Se recomienda que la versión de la ventana acoplable de las tres máquinas sea la misma.

La instalación está completa y configurada para arrancar

La versión de Docker que instalé es docker-ce-19.03.12

Referencia del método de construcción:

https://www.yuque.com/docs/share/407895ea-3456-4895-bdee-ec16df344a09?# "centos7 instala la versión especificada de Docker"

Configuración del almacén de Docker Imagen de Alibaba Cloud

Debido a que la velocidad de Internet es rápida, de lo contrario, la descarga de la imagen será muy lenta,

Ejecute las tres máquinas

cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF

Después del cambio, debe reiniciar todas las ventanas acoplables para que la configuración surta efecto.

Comando de reinicio:

 systemctl restart docker

Agregue la fuente de software yum de Alibaba Cloud

Debido a que necesita descargar cosas más tarde, si no lo agrega, se conectará a un sitio web extranjero y la velocidad de descarga puede ser muy lenta, o incluso una red extranjera.

Las tres máquinas están pegadas a la terminal de Linux y se ejecutan

 cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

Compruebe si la configuración es correcta

mando:

docker info

resultado:

Si Registry Mirrors es aliyuncs, la configuración es correcta.

[root@zjj103 ~]# docker info
Client:
 Debug Mode: false

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 19.03.12
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 269548fa27e0089a8b8278fc4fc781d7f65a939b
 runc version: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
 init version: fec3683
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 3.10.0-957.el7.x86_64
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 1
 Total Memory: 2.728GiB
 Name: zjj103
 ID: AA4E:2ANN:6QOU:PPLO:MOJQ:JGPP:27GU:SA2Q:BFIZ:5OER:4VSZ:W3FO
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
  
 Registry Mirrors:
  https://b9pmyelo.mirror.aliyuncs.com/
 Live Restore Enabled: false

Comience a instalar K8s

Instale kubeadm, kubelet y kubectl

Dado que la versión se actualiza con frecuencia, el número de versión se especifica aquí para la implementación,

Si no especifica el número de versión, se instala la última versión.

Instálelo en los tres nodos

 yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
 

Configurar el arranque

 systemctl enable kubelet

Implementar Kubernetes Master

Ejecutar en el nodo maestro, no ejecutar en el nodo del nodo

Nota: 172.16.10.101 es la ip del nodo maestro actual

 kubeadm init --apiserver-advertise-address=172.16.10.101   --image-repository registry.aliyuncs.com/google_containers   --kubernetes-version v1.18.0   --service-cidr=10.96.0.0/12   --pod-network-cidr=10.244.0.0/16

Dado que no se puede acceder a la dirección de espejo de extracción predeterminada k8s.gcr.io en China, especifique aquí la dirección del almacén de espejo de Alibaba Cloud.

  • Instrucciones de configuración:

apiserver-publicidad-address es el jp del nodo actual

image-repository es la dirección espejo

versión kubernetes versión k8s

service-cidr y pod-network-cidr son las ips a las que se accede por su propia conexión. No hay requisitos especiales, siempre que no entren en conflicto con el sistema actual.

  • Que hace este comando

    Su nodo maestro tiene que hacer muchas cosas, como la descarga e implementación de los componentes espejo del administrador del controlador del servidor api

    Puede ver que este comando lo ayudó a extraer muchos espejos relacionados con K8

[root@zjj101 ~]# docker images
REPOSITORY                                                        TAG                 IMAGE ID            CREATED             SIZE
registry.aliyuncs.com/google_containers/kube-proxy                v1.18.0             43940c34f24f        11 months ago       117MB
registry.aliyuncs.com/google_containers/kube-apiserver            v1.18.0             74060cea7f70        11 months ago       173MB
registry.aliyuncs.com/google_containers/kube-controller-manager   v1.18.0             d3e55153f52f        11 months ago       162MB
registry.aliyuncs.com/google_containers/kube-scheduler            v1.18.0             a31f78c7c8ce        11 months ago       95.3MB
registry.aliyuncs.com/google_containers/pause                     3.2                 80d28bedfe5d        12 months ago       683kB
registry.aliyuncs.com/google_containers/coredns                   1.6.7               67da37a9a360        13 months ago       43.8MB
registry.aliyuncs.com/google_containers/etcd                      3.4.3-0             303ce5db0e90        16 months ago       288MB

Utilice la herramienta kubectl:

imagen-20210226194853452

La siguiente no es necesariamente la misma que la consola anterior, se recomienda verificar

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

Ver que nodos hay

 kubectl get nodes

5. Únase al nodo de Kubernetes

Después de que se ejecute el comando anterior ejecutado en el nodo nodo,

Si no se ejecuta, si olvida el token, use el siguiente método para regenerar el token.

Ingrese comandos en el nodo maestro

kubeadm token create --print-join-command

Verifique el contenido de la consola y busque un comando similar al siguiente. Este es el token. El período de validez predeterminado del token es de 24 horas. Después del vencimiento, el token no se puede usar. Debe volver a crear el token.

 kubeadm join 192.168.1.11:6443 --token esce21.q6hetwm8si29qxwn \
    --discovery-token-ca-cert-hash sha256:00603a05805807501d7181c3d60b478788408cfe6cedefedb1f97569708be9c5

Copie este comando en el nodo nodo para ejecutarlo, tenga en cuenta que el nodo maestro no necesita ejecutarse, el nodo nodo lo ejecuta.

Compruebe el grupo de K8s

Use el comando kubectl get nodes para verificar el nodo maestro, y puede encontrar que hay un maestro y dos nodos de nodo.

[root@zjj101 ~]# kubectl get nodes
NAME     STATUS     ROLES    AGE    VERSION
zjj101   NotReady   master   6h8m   v1.18.0
zjj102   NotReady   <none>   7s     v1.18.0
zjj103   NotReady   <none>   11m    v1.18.0

Se encuentra que todo el estado es NotReady, porque la red aún no es accesible y se requiere un complemento de red.

6. Implementar el complemento de red CNI

No se puede acceder a la dirección duplicada predeterminada y el comando sed se modifica en el almacén duplicado de docker hub.

Ejecute primero en el nodo maestro:

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Si ejecuta de nuevo, la red puede ser un poco lenta en este momento y puede fallar. Inténtelo unas cuantas veces más. Si no funciona, busque un archivo kube-flannel.yml e intente configurarlo localmente. Kubectl apply kube-flannel.yml lee archivos locales, parece que se puede leer, lo intentaré cuando haya esta escena.

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


Verifique si todo comenzó con éxito

kubectl get pods -n comando kube-system

Todo en el estado de ejecución significa que la ejecución es exitosa

[root@zjj101 ~]# kubectl get pods -n kube-system
NAME                             READY   STATUS    RESTARTS   AGE
coredns-7ff77c879f-mfjmg         1/1     Running   0          5m52s
coredns-7ff77c879f-t8fdg         1/1     Running   0          5m52s
etcd-zjj101                      1/1     Running   0          6m3s
kube-apiserver-zjj101            1/1     Running   0          6m3s
kube-controller-manager-zjj101   1/1     Running   0          6m3s
kube-flannel-ds-7stq4            1/1     Running   0          105s
kube-flannel-ds-lpbrp            1/1     Running   0          105s
kube-flannel-ds-rsttx            1/1     Running   0          105s
kube-proxy-chmpw                 1/1     Running   0          4m39s
kube-proxy-cvz8v                 1/1     Running   0          4m46s
kube-proxy-pq44r                 1/1     Running   0          5m52s
kube-scheduler-zjj101            1/1     Running   0          6m3s

Eche un vistazo a los nodos

comando kubectl obtener nodos

[root@zjj101 ~]#  kubectl get nodes
NAME     STATUS   ROLES    AGE     VERSION
zjj101   Ready    master   7m34s   v1.18.0
zjj102   Ready    <none>   6m7s    v1.18.0
zjj103   Ready    <none>   6m1s    v1.18.0

Descubrir que el estado está listo, significa que el inicio es exitoso

7. Prueba el clúster de Kubernetes

Cree un pod en el clúster de Kubernetes y verifique que se esté ejecutando normalmente:

# 拉取nginx 的pod
[root@zjj101 ~]# kubectl create deployment nginx --image=nginx
deployment.apps/nginx created
# 查看pod ,发现了一个nginx,等status状态变成running状态后就可以了
[root@zjj101 ~]#  kubectl get pod
NAME                    READY   STATUS    RESTARTS   AGE
nginx-f89759699-rh5lk   1/1     Running   0          2m19s

El puerto externo está expuesto. Si no lo expone, no se podrá acceder a la red externa. El puerto predeterminado de nginx es 80

命令: kubectl exponer implementación nginx --port = 80 --type = NodePort

[root@zjj101 ~]# kubectl expose deployment nginx --port=80 --type=NodePort
service/nginx exposed

Ver puertos externos: kubectl get pod, svc

[root@zjj101 ~]# kubectl get pod,svc
NAME                        READY   STATUS    RESTARTS   AGE
pod/nginx-f89759699-rh5lk   1/1     Running   0          5m10s

NAME                 TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1     <none>        443/TCP        15m
service/nginx        NodePort    10.98.67.59   <none>        80:31715/TCP   46s

Se encuentra que el puerto expuesto por nginx es 31715

Abra el navegador y pruébelo

zjj101 zjj102 zjj103 es que hice mapeo de host en la máquina de Windows. De hecho, zjj101 es la máquina maestra, zjj102 es la máquina de nodo1 y zjj103 es la máquina de nodo2.

http: // zjj101: 31715 /

http: // zjj102: 31715 /

http: // zjj103: 31715 /

imagen-20210226200522000

Supongo que te gusta

Origin blog.csdn.net/qq_41489540/article/details/114151789
Recomendado
Clasificación