cat>kubeadm-config.yaml<<'EOF' apiVersion: kubeadm.k8s.io/v1beta4 kind: ClusterConfiguration kubernetesVersion: v1.35.0 controlPlaneEndpoint: "10.0.0.200:8443" #设置阿里云镜像仓库 imageRepository: "registry.aliyuncs.com/google_containers" networking: podSubnet: "10.244.0.0/16" serviceSubnet: "10.96.0.0/12" EOFkubeadm config images list--config=kubeadm-config.yaml#查看需要拉去的镜像kubeadm config images pull--config=kubeadm-config.yaml#预先拉取镜像kubeadm init--config=kubeadm-config.yaml --upload-certs#初始化集群... To start using your cluster, you need to run the following as a regular user:mkdir-p$HOME/.kubesudocp-i/etc/kubernetes/admin.conf$HOME/.kube/configsudochown$(id-u):$(id-g)$HOME/.kube/config Alternatively,ifyou are the root user, you can run:exportKUBECONFIG=/etc/kubernetes/admin.conf You should now deploy a pod network to the cluster. Run"kubectl apply -f [podnetwork].yaml"with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/ You can nowjoinany number of control-plane nodes running the followingcommandon each as root:#master节点kubeadmjoin10.0.0.200:8443--token58ou8b.wsq5w636x8fnyz7d\--discovery-token-ca-cert-hash sha256:a45a627d01bd609db7303ab74f50446fd7b202184649986d6e0a923d8fe3c969\--control-plane --certificate-key 812c0917d59165ff3cbd93128a41cccf0b2d93e82b08121609f1acc136c0eba7 Please note that the certificate-key gives access to cluster sensitive data, keep it secret!As a safeguard, uploaded-certs will be deletedintwo hours;If necessary, you can use"kubeadm init phase upload-certs --upload-certs"to reload certs afterward. Then you canjoinany number of worker nodes by running the following on each as root:#worker节点kubeadmjoin10.0.0.200:8443--token58ou8b.wsq5w636x8fnyz7d\--discovery-token-ca-cert-hash sha256:a45a627d01bd609db7303ab74f50446fd7b202184649986d6e0a923d8fe3c969#master201mkdir-p$HOME/.kubesudocp-i/etc/kubernetes/admin.conf$HOME/.kube/configsudochown$(id-u):$(id-g)$HOME/.kube/config#master202和master203kubeadmjoin10.0.0.200:8443--token58ou8b.wsq5w636x8fnyz7d\--discovery-token-ca-cert-hash sha256:a45a627d01bd609db7303ab74f50446fd7b202184649986d6e0a923d8fe3c969\--control-plane --certificate-key 812c0917d59165ff3cbd93128a41cccf0b2d93e82b08121609f1acc136c0eba7mkdir-p$HOME/.kubesudocp-i/etc/kubernetes/admin.conf$HOME/.kube/configsudochown$(id-u):$(id-g)$HOME/.kube/config#worker204kubeadmjoin10.0.0.200:8443--token58ou8b.wsq5w636x8fnyz7d\--discovery-token-ca-cert-hash sha256:a45a627d01bd609db7303ab74f50446fd7b202184649986d6e0a923d8fe3c969 root@master201:~# kubectl get nodes -o wideNAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME master201 NotReady control-plane 8m26s v1.35.010.0.0.201<none>Ubuntu22.04.5 LTS5.15.0-179-generic containerd://2.2.6 master202 NotReady control-plane 2m30s v1.35.010.0.0.202<none>Ubuntu22.04.5 LTS5.15.0-179-generic containerd://2.2.6 master203 NotReady control-plane 43s v1.35.010.0.0.203<none>Ubuntu22.04.5 LTS5.15.0-179-generic containerd://2.2.6 worker204 NotReady<none>26s v1.35.010.0.0.204<none>Ubuntu22.04.5 LTS5.15.0-179-generic containerd://2.2.6
calico
kubectl apply-fhttps://ghfast.top/https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/calico.yaml kubectl get pods-nkube-system-w#等待,如果有镜像拉取问题,手动拉镜像root@master201:~# kubectl get nodes -o wideNAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME master201 Ready control-plane 17m v1.35.010.0.0.201<none>Ubuntu22.04.5 LTS5.15.0-179-generic containerd://2.2.6 master202 Ready control-plane 11m v1.35.010.0.0.202<none>Ubuntu22.04.5 LTS5.15.0-179-generic containerd://2.2.6 master203 Ready control-plane 9m21s v1.35.010.0.0.203<none>Ubuntu22.04.5 LTS5.15.0-179-generic containerd://2.2.6 worker204 Ready<none>9m4s v1.35.010.0.0.204<none>Ubuntu22.04.5 LTS5.15.0-179-generic containerd://2.2.6#测试dns解析kubectl run-it--rmdebug--image=harbor.qltang.com/linux/busybox:qltangv1--restart=Never --nslookupkube-dns.kube-system.svc.cluster.local Server:10.96.0.10 Address:10.96.0.10:53 Name: kube-dns.kube-system.svc.cluster.local Address:10.96.0.10 pod"debug"deleted from default namespace kubectl run-it--rmdebug--image=harbor.qltang.com/linux/busybox:qltangv1--restart=Never --nslookupbaidu.com Server:10.96.0.10 Address:10.96.0.10:53 Non-authoritative answer: Name: baidu.com Address:111.63.65.103 Name: baidu.com Address:111.63.65.247 Name: baidu.com Address:110.242.74.102 Name: baidu.com Address:124.237.177.164 Non-authoritative answer: pod"debug"deleted from default namespace#测试高可用root@master201:~# systemctl stop haproxy.service #停止haproot@master201:~# ip a...2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdisc fq_codel state UP group default qlen1000link/ether 00:0c:29:09:59:e0 brd ff:ff:ff:ff:ff:ff altname enp2s1 altname ens33 inet10.0.0.201/24 brd10.0.0.255 scope global eth0#节点已漂移valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe09:59e0/64 scopelinkvalid_lft forever preferred_lft forevercurlhttp://10.0.0.200:9999/ruok<html><body><h1>200OK</h1>Service ready.</body></html>root@master202:~# ip a...2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdisc fq_codel state UP group default qlen1000link/ether 00:0c:29:9c:01:51 brd ff:ff:ff:ff:ff:ff altname enp2s1 altname ens33 inet10.0.0.202/24 brd10.0.0.255 scope global eth0 valid_lft forever preferred_lft forever inet10.0.0.200/24 scope global secondary eth0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe9c:151/64 scopelinkvalid_lft forever preferred_lft forever root@master201:~# kubectl get nodes -o wideNAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME master201 Ready control-plane 27m v1.35.010.0.0.201<none>Ubuntu22.04.5 LTS5.15.0-179-generic containerd://2.2.6 master202 Ready control-plane 21m v1.35.010.0.0.202<none>Ubuntu22.04.5 LTS5.15.0-179-generic containerd://2.2.6 master203 Ready control-plane 19m v1.35.010.0.0.203<none>Ubuntu22.04.5 LTS5.15.0-179-generic containerd://2.2.6 worker204 Ready<none>19m v1.35.010.0.0.204<none>Ubuntu22.04.5 LTS5.15.0-179-generic containerd://2.2.6