Centos7 déploie le cluster Kubernetes [version 1.17]

1. Exigences d'installation

Avant de commencer, les conditions suivantes doivent être remplies pour déployer des machines de cluster Kubernetes:

  • Une ou plusieurs machines, système d'exploitation CentOS7.x-86_x64
  • Configuration matérielle: 2 Go ou plus de RAM, 2 CPU ou plus, disque dur 30 Go ou plus
  • Communication réseau entre toutes les machines du cluster
  • Peut accéder au réseau externe, besoin de tirer le miroir
  • Interdire la partition d'échange

2. Objectifs d'apprentissage

  1. Installez Docker et kubeadm sur tous les nœuds
  2. Déployer Kubernetes Master
  3. Déployer le plugin de réseau de conteneurs
  4. Déployez le nœud Kubernetes et ajoutez le nœud au cluster Kubernetes
  5. Déployer la page Web du tableau de bord pour afficher visuellement les ressources Kubernetes

3. Préparez l'environnement

kubernetesæž¶æž „å› ¾

Rôles IP
maître k8s 172.31.53.143 (intranet)
k8s-node1 172.31.53.144 (intranet)
关闭防火墙:
$ systemctl stop firewalld
$ systemctl disable firewalld

关闭selinux:
$ sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
$ setenforce 0  # 临时

关闭swap:
$ swapoff -a  # 临时
$ vim /etc/fstab  # 永久

设置主机名:
$ hostnamectl set-hostname <hostname>

在master添加hosts:
$ cat >> /etc/hosts << EOF
172.31.53.143 k8s-master
172.31.53.144 k8s-node1
EOF

将桥接的IPv4流量传递到iptables的链:
$ cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
$ sysctl --system  # 生效

时间同步:
$ yum install ntpdate -y  #centos8:yum -y install chrony
$ ntpdate time.windows.com

4. Installez Docker / kubeadm / kubelet sur tous les nœuds

Le CRI par défaut de Kubernetes (runtime du conteneur) est Docker, donc installez d'abord Docker.

4.1 Installer Docker

$ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
$ yum -y install docker-ce-18.06.1.ce-3.el7
$ systemctl enable docker && systemctl start docker
$ docker --version
Docker version 18.06.1-ce, build e68fc7a
# cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://a9b10k37.mirror.aliyuncs.com"]
}
EOF

4.2 Ajouter la source logicielle Alibaba Cloud YUM

$ 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

4.3 Installer kubeadm, kubelet et kubectl

En raison des fréquentes mises à jour de version, le numéro de version est spécifié ici pour le déploiement:

$ yum install -y kubelet-1.17.0 kubeadm-1.17.0 kubectl-1.17.0
$ systemctl enable kubelet

5. Déployer Kubernetes Master

Exécutez à 172.31.53.143 (maître). (172.31.53.143 est l'intranet)
apiserver-advertise-addressdoit être l'adresse IP de l'intranet! L'accès initial au réseau externe n'est pas accessible, ce qui entraînera une panne

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

Étant donné que l'adresse de miroir d'extraction par défaut k8s.gcr.io n'est pas accessible en Chine, spécifiez ici l'adresse de l'entrepôt de miroir Alibaba Cloud.

Utilisez l'outil kubectl:

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

6. Installez le module d'extension de réseau de pod (CNI)

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

#查看是否启动完毕
$ kubectl get pods -n kube-system
#查看pods列表
$ kubectl get pods #--all-namespaces

ps: Si https://raw.githubusercontent.com n'est pas accessible, utilisez le téléchargement hors ligne:

#下载不了请使用离线下载:https://pan.baidu.com/s/1dmk2ZnJCrrxoReex3FwUkg提取码:vniv
#下载后先安装镜像,然后执行安装flannel
docker import  flannel-v0.11.0-linux-amd64.tar.gz
kubectl create -f kube-flannel.yml
#查看安装是否成功
kubectl get pod -n kube-system
#如果STATUS不是running则失败删除重装
#kubectl delete -f kube-flannel.yml

#查看是否启动完毕
$ kubectl get pods -n kube-system
#查看pods列表
$ kubectl get pods #--all-namespaces

Assurez-vous que vous pouvez accéder au registre de quay.io.

Si le téléchargement du miroir du pod échoue, vous pouvez passer à cette adresse miroir: lizhenliang / flannel: v0.11.0-amd64

7. Rejoignez le nœud Kubernetes

Effectué à 172.31.53.144 (Node).

Pour ajouter un nouveau nœud au cluster, exécutez la sortie de la commande kubeadm join dans kubeadm init:

$ kubeadm join 172.31.53.143:6443 --token 5fuqco.mxzqki2me183mssm \
    --discovery-token-ca-cert-hash sha256:0aaceebc4bc3bd5cc1653666683eb72b9e328747c7d077e473e7a130a6463586

S'il y a un problème: le maître a été dans l'état non prêt après kubeadm init.
Dépannage: utilisez systemctl status kubelet pour afficher le journal

  1. le plugin flannel ne prend pas en charge la version de configuration ""

    vim /etc/cni/net.d/10-flannel.conflist
    //加上cni的版本号:
    //文件内容如下
    {
          
          
      "name": "cbr0",
      "cniVersion": "0.3.1",
      "plugins": [
        {
          
          
          "type": "flannel",
          "delegate": {
          
          
            "hairpinMode": true,
            "isDefaultGateway": true
          }
        },
        {
          
          
          "type": "portmap",
          "capabilities": {
          
          
            "portMappings": true
          }
        }
      ]
    }
    

    Exécuter après modification:

    systemctl daemon-reload 
    

    Vérifiez à nouveau l'état du cluster kubectl get nodeset constatez que le maître est normal et à l'état prêt; mais le nœud node1 est toujours dans l'état non prêt:

    Accédez à node1, vérifiez le journal kubectl et constatez qu'il signale toujours une erreur no valid networks found in /etc/cni/net.d
    . Ajoutez le numéro de version de cni à node1 et redémarrez, vous pouvez voir que l'état du cluster devient normal

8. Testez le cluster kubernetes

Créez un pod dans le cluster Kubernetes et vérifiez qu'il s'exécute normalement:

$ kubectl create deployment nginx --image=nginx
$ kubectl expose deployment nginx --port=80 --type=NodePort
$ kubectl get pod,svc

#扩容3个nginx
$ kubectl scale deployment nginx --replicas=3

Afficher l'affichage:

[root@master ~]# kubectl get pod,svc
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-86c57db685-glwd5   1/1     Running   0          19s
pod/nginx-86c57db685-j8d94   1/1     Running   0          19s
pod/nginx-86c57db685-z22p4   1/1     Running   0          3m52s

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        131m
service/nginx        NodePort    10.96.139.211   <none>        80:32618/TCP   3m43s

Adresse de visite: http: // NodeIP: Port (http: // IP du réseau externe: 32618)
Visite réussie:
Insérez la description de l'image ici

fin

À ce stade, l'installation et le déploiement du cluster k8s sont terminés!

Je suppose que tu aimes

Origine blog.csdn.net/a251628111/article/details/106521745
conseillé
Classement