Triển khai cụm Kubernetes đơn master bằng kubeadm trên CentOS 7 (phiên bản 1.22.5)

Danh mục- 1. Chuẩn bị môi trường

    1. Cài đặt Docker (trên cả 3 nút)
    1. Cấu hình kho lưu trữ K8S của Alibaba Cloud (trên cả 3 nút)
    1. Cài đặt kubeadm, kubelet, kubectl (trên cả 3 nút)
    1. Triển khai nút master Kubernetes (thực hiện trên nút master)
    1. Nút worker tham gia vào cụm (thực hiện trên 2 nút worker)
    1. Cài đặt plugin mạng Pod (CNI, thực hiện trên nút master)
    1. Cài đặt giao diện quản lý trực quan Dashboard trên nút master
  1. Chuẩn bị môi trường =======

Ba máy chủ

192.168.10.100 control-plane
192.168.10.101 worker1
192.168.10.102 worker2

Tắt tường lửa, SELinux và swap (trên cả ba máy)

systemctl stop firewalld && systemctl disable firewalld
setenforce 0
swapoff -a

Thay đổi tên máy chủ và cập nhật vào file /etc/hosts

hostnamectl set-hostname control-plane && su
hostnamectl set-hostname worker1 && su
hostnamectl set-hostname worker2 && su

cat >> /etc/hosts << EOF
192.168.10.100 control-plane
192.168.10.101 worker1
192.168.10.102 worker2
EOF

Cho phép chuyển tiếp lưu lượng IPv4 qua iptables

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
fs.inotify.max_user_watches = 1048576
net.ipv4.ip_forward = 1
EOF

sysctl --system

Đồng bộ thời gian

yum -y install ntpdate
ntpdate time.windows.com

Nếu múi giờ không chính xác, thực hiện lệnh sau rồi đồng bộ lại

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
(date -s "2021 00:00:00"  hwclock -systohc)

  1. Cài đặt Docker (trên cả 3 nút) ==================
yum -y install yum-utils device-mapper-persistent-data lvm2
cd /etc/yum.repos.d/
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce
systemctl enable docker && systemctl start docker
sudo mkdir -p /etc/docker
systemctl start docker && systemctl enable docker

cat > /etc/docker/daemon.json << EOF
{
   "exec-opts": ["native.cgroupdriver=systemd"],
   "storage-driver": "overlay2",
   "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
   "ip-forward": true,
   "live-restore": false,
   "log-opts": {
    "max-size": "100m",
    "max-file":"3"
  },
   "default-ulimits": {
    "nproc": {
      "Name": "nproc",
      "Hard": 32768,
      "Soft": 32768
    },
    "nofile": {
      "Name": "nofile",
      "Hard": 32768,
      "Soft": 32768
    }
  }
}
EOF

sed -i 's/-H fd:\/\/ //g' /usr/lib/systemd/system/docker.service
systemctl daemon-reload && systemctl restart docker
systemctl status docker

Thêm tham số "exec-opts": ["native.cgroupdriver=systemd"] sẽ làm driver cgroup của Docker chuyển thành systemd (phiên bản cao hơn mặc định là cgroupfs)

  1. Cấu hình kho lưu trữ K8S của Alibaba Cloud (trên cả 3 nút) =========================
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

yum clean all && yum makecache

  1. Cài đặt kubeadm, kubelet, kubectl (trên cả 3 nút) ===================================
# yum install -y kubelet-1.22.5 kubeadm-1.22.5 kubectl-1.22.5
yum -y install kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0 --nogpgcheck
systemctl enable kubelet

  1. Triển khai nút master Kubernetes (thực hiện trên nút master) ========================================

Khởi tạo cụm bằng kubeadm

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

Giải thích các tham số

kubeadm init \
--apiserver-advertise-address=10.0.0.116 \                  #Chỉ định địa chỉ master lắng nghe, sửa thành địa chỉ master của bạn
--image-repository registry.aliyuncs.com/google_containers \   #Chỉ định kho lưu trữ của Alibaba Cloud, nên dùng kho trong nước
--kubernetes-version v1.18.0 \                 #Chỉ định phiên bản K8s, phiên bản 1.18.0 tương đối ổn định
--service-cidr=10.96.0.0/12 \                  #Đặt mạng nội bộ của cụm
--pod-network-cidr=10.244.0.0/16                #Đặt mạng cho pod
# service-cidr và pod-network-cidr nên giữ nguyên, nếu không sẽ cần sửa tệp kube-flannel.yaml sau này

Nếu xuất hiện thông báo "Your Kubernetes control-plane has initialized successfully!" là khởi tạo thành công, nếu khởi tạo thất bại hãy kiểm tra nguyên nhân

Các phiên bản cao như v1.22.5 có thể thất bại, tham khảo: liên kết Trong tệp /etc/docker/daemon.json, thêm dòng exec-opts": ["native.cgroupdriver=systemd"], khởi động lại Docker và xóa thông tin kubeadm rồi khởi tạo lại.

[root@k8s-node2 ~]# vim /etc/docker/daemon.json	# master/worker
...
"exec-opts": ["native.cgroupdriver=systemd"],
...
[root@k8s-node2 ~]# systemctl restart docker
[root@k8s-master ~]# kubeadm reset -f		# master

Worker cần token để tham gia cụm, token có hiệu lực trong 24 giờ, nếu hết hạn cần tạo mới, lệnh tạo là kubeadm token create --print-join-command

Thực hiện lệnh sau để sử dụng công cụ kubectl

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

[root@master ~]# kubectl get nodes
NAME     STATUS     ROLES                  AGE    VERSION
master   NotReady   control-plane,master   111m   v1.22.5
[root@master ~]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE                         ERROR
scheduler            Healthy   ok                              
controller-manager   Healthy   ok                              
etcd-0               Healthy   {"health":"true","reason":""}   

## Lưu ý scheduler hiển thị không khỏe là do phiên bản cao, tham khảo:
## https://wenku.baidu.com/view/61cacb4ea75177232f60ddccda38376bae1fe058.html

  1. Nút worker tham gia vào cụm (thực hiện trên 2 nút worker) ======================================

Nếu gặp lỗi khi tham gia, master cần tạo lại token

worker1

[root@worker1 ~]# kubeadm join 192.168.10.100:6443 --token 9k5ber.igx20a8r6ihdofqf \
>     --discovery-token-ca-cert-hash sha256:2aedeeb05acc423530aaf748b9f660d0c03bbe2b1fa248bc4ccf97d296f3bc9a 
......
Nút này đã tham gia vào cụm:
* Yêu cầu cấp chữ ký chứng chỉ đã được gửi đến apiserver và nhận được phản hồi.
* Kubelet đã được thông báo về chi tiết kết nối bảo mật mới.

Chạy lệnh 'kubectl get nodes' trên nút điều khiển để xem nút này đã tham gia cụm.

worker2

[root@worker2 ~]# kubeadm join 192.168.10.100:6443 --token 9k5ber.igx20a8r6ihdofqf \
>     --discovery-token-ca-cert-hash sha256:2aedeeb05acc423530aaf748b9f660d0c03bbe2b1fa248bc4ccf97d296f3bc9a 
......
Nút này đã tham gia vào cụm:
* Yêu cầu cấp chữ ký chứng chỉ đã được gửi đến apiserver và nhận được phản hồi.
* Kubelet đã được thông báo về chi tiết kết nối bảo mật mới.

Chạy lệnh 'kubectl get nodes' trên nút điều khiển để xem nút này đã tham gia cụm.

Kiểm tra trên master

[root@master ~]# kubectl get nodes
NAME     STATUS     ROLES    AGE   VERSION
master   NotReady   master   24m   v1.15.1
worker1   NotReady   <none>   97s   v1.15.1
worker2   NotReady   <none>   91s   v1.15.1

Trạng thái nút hiển thị NotReady, cần cài đặt plugin mạng

Token hết hạn, tạo lại token trên master kubeadm token create --print-join-command Nếu nút worker tham gia thất bại, xóa cache: kubeadm reset

kubeadm cài đặt K8s 1.22.1

  1. Cài đặt plugin mạng Pod (CNI, thực hiện trên nút master) ================================

Tải xuống tệp yaml plugin

# Website nước ngoài
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# Website trong nước
wget http://120.78.77.38/file/kube-flannel.yaml

Thực hiện cài đặt

# Cần thời gian để cài đặt
kubectl apply -f kube-flannel.yaml

Thực hiện lệnh kubectl get pods -n kube-system thấy lỗi do trang web quay.io hiện tại ở Trung Quốc không truy cập được, tài nguyên không tải được, giải pháp tham khảo: https://blog.csdn.net/K_520_W/article/details/116566733

Dưới đây là phương pháp tiện lợi

# Sửa tệp flannel plugin, phiên bản này thấp, với phiên bản k8s cao hơn nên chọn phiên bản flannel cao hơn
sed -i -r "s#quay.io/coreos/flannel:.*-amd64#lizhenliang/flannel:v0.12.0-amd64#g" kube-flannel.yaml
kubectl apply -f kube-flannel.yaml
kubectl get pods -n kube-system
kubectl get node  # Cài đặt xong plugin mạng, nút sẵn sàng

Cài đặt phiên bản flannel 0.14.0 wget http://49.232.8.65/yml/flannel-v0.14.0/kube-flannel.yml sed -i -r "s#quay.io/coreos/flannel:.*-amd64#lizhenliang/flannel:v0.14.0-amd64#g" kube-flannel.yml kubectl apply -f kube-flannel.yml Xóa nhãn: kubectl taint nodes --all node-role.kubernetes.io/master-

Kiểm tra

[root@master ~]# kubectl get pods -A
NAMESPACE     NAME                             READY   STATUS    RESTARTS   AGE
kube-system   coredns-7f6cbbb7b8-drzqc         1/1     Running   0          19m
kube-system   coredns-7f6cbbb7b8-prcwv         1/1     Running   0          19m
kube-system   etcd-control-plane                      1/1     Running   0          19m
kube-system   kube-apiserver-control-plane            1/1     Running   0          19m
kube-system   kube-controller-manager-control-plane   1/1     Running   0          16m
kube-system   kube-flannel-ds-8g92b            1/1     Running   0          27s
kube-system   kube-flannel-ds-qzvxn            1/1     Running   0          27s
kube-system   kube-flannel-ds-x6lkb            1/1     Running   0          27s
kube-system   kube-proxy-5xx5c                 1/1     Running   0          15m
kube-system   kube-proxy-fsp8p                 1/1     Running   0          15m
kube-system   kube-proxy-gldb2                 1/1     Running   0          19m
kube-system   kube-scheduler-control-plane            1/1     Running   0          16m

[root@master ~]# kubectl get node -o wide
NAME     STATUS   ROLES                  AGE   VERSION   INTERNAL-IP      EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION          CONTAINER-RUNTIME
control-plane   Ready    control-plane,master   22m   v1.22.5   192.168.10.100   <none>        CentOS Linux 7 (Core)   3.10.0-693.el7.x86_64   docker://20.10.7
worker1   Ready    <none>                 18m   v1.22.5   192.168.10.101   <none>        CentOS Linux 7 (Core)   3.10.0-693.el7.x86_64   docker://20.10.7
worker2   Ready    <none>                 18m   v1.22.5   192.168.10.102   <none>        CentOS Linux 7 (Core)   3.10.0-693.el7.x86_64   docker://20.10.7

Kiểm tra cụm K8s, tạo một pod trong cụm để xác minh xem có chạy được không

[root@master ~]# kubectl get pod	# Mặc định không có pod trong không gian tên
No resources found.
[root@master ~]# kubectl create deployment nginx --image=nginx
deployment.apps/nginx created
[root@master ~]# kubectl expose deployment nginx --port=80 --type=NodePort	# Mở cổng để truy cập từ bên ngoài
service/nginx exposed
[root@master ~]# kubectl get pod,svc
NAME                         READY   STATUS              RESTARTS   AGE
pod/nginx-554b9c67f9-295wt   0/1     ContainerCreating   0          22s

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        55m
service/nginx        NodePort    10.106.243.55   <none>        80:32141/TCP   10s
[root@master ~]# curl 192.168.10.100:32141		# Nginx mở cổng 32141, truy cập qua http://nodeIP:port, bất kỳ IP nút nào đều được

<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

Cài đặt plugin mạng calico curl https://docs.projectcalico.org/manifests/calico.yaml -O kubectl apply -f calico.yaml Thời gian thực hiện phụ thuộc vào mạng

  1. Cài đặt giao diện quản lý trực quan Dashboard trên nút master ===============================

Tải xuống tệp plugin

wget http://120.78.77.38/file/kubernetes-dashboard.yaml

Sửa nội dung tệp

Sửa tệp kubernetes-dashboard.yaml, thêm dòng nodePort: 30001, như hình bên dưới, vị trí đánh dấu là dòng thêm vào, cổng tự chọn, không xung đột

      nodePort: 30001

Thực hiện cài đặt

[root@master ~]# kubectl apply -f kubernetes-dashboard.yaml
......
[root@master ~]# kubectl get pods -n kubernetes-dashboard
NAME                                         READY   STATUS              RESTARTS   AGE
dashboard-metrics-scraper-6c554969c6-r5kmx   0/1     ContainerCreating   0          14s
kubernetes-dashboard-56c5f95c6b-j7xgb        0/1     ContainerCreating   0          14s
[root@master ~]# kubectl get pods -n kubernetes-dashboard
NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-6c554969c6-r5kmx   1/1     Running   0          52s
kubernetes-dashboard-56c5f95c6b-j7xgb        1/1     Running   0          52s

Kiểm tra pod đang chạy trên nút nào, truy cập giao diện web

dashboard-metrics thu thập chỉ số giám sát, kubernetes-dashboard là giao diện quản lý

[root@master ~]# kubectl get pod -n kubernetes-dashboard -o wide
NAME                                         READY   STATUS    RESTARTS   AGE     IP           NODE     NOMINATED NODE   READINESS GATES
dashboard-metrics-scraper-6c554969c6-r5kmx   1/1     Running   0          2m35s   10.244.1.3   worker1   <none>           <none>
kubernetes-dashboard-56c5f95c6b-j7xgb        1/1     Running   0          2m35s   10.244.2.2   worker2   <none>           <none>

Truy cập: https://192.168.10.102:30001/

Khuyến khích sử dụng trình duyệt Firefox, trình duyệt khác có thể không truy cập được do thiếu chứng chỉ tin cậy, hướng dẫn tạo chứng chỉ tham khảo: https://blog.csdn.net/shenyuanhaojie/article/details/121951326?spm=1001.2014.3001.5501 https://blog.csdn.net/weixin_40228200/article/details/124677472

openssl genrsa -out dashboard.key 2048
openssl req -new -out dashboard.csr -key dashboard.key -subj '/CN=<<<<<IP>>>>>'
openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
kubectl delete secret kubernetes-dashboard-certs -n kubernetes-dashboard
kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kubernetes-dashboard
kubectl delete pod kubernetes-dashboard-5b489d6456-s5nb5 -n kubernetes-dashboard
kubectl describe secrets -n kube-system $(kubectl^Cn kube-system get secret |awk '/dashboard-admin/{pirnt $1}')

Chúng ta sử dụng token để đăng nhập, tạo token trên nút master

[root@master ~]# kubectl create serviceaccount  dashboard-admin -n kube-system
serviceaccount/dashboard-admin created
[root@master ~]# kubectl create  clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
clusterrolebinding.rbac.authorization.k8s.io/dashboard-admin created
[root@master ~]# kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret |awk '/dashboard-admin/{pirnt $1}')
......
......

Chọn một token

Token có quyền cao

kubectl get secret -n kube-system |grep admin|awk '{print $1}'
kubectl describe secret <<<secret name>>> -n kube-system|grep '^token'|awk '{print $2}'

Tài liệu tham khảo:

Triển khai cụm Kubernetes theo cách nhị phân (đơn/đa master) Plugin Dashboard của K8s, triển khai và sử dụng Xây dựng cụm Kubernetes đơn master bằng cách nhị phân (v1.18.18) Triển khai cụm đơn master Kubernetes trên CentOS7 bằng kubeadm Giải quyết vấn đề cài đặt plugin flannel trong K8s

Tóm tắt quy trình

###Cài đặt Docker, kubeadm, kubelet
1、Cài đặt nguồn Docker
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2、Cài đặt Docker
yum install -y docker-ce
systemctl start docker
systemctl enable docker

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://jqqwsp8f.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

3、Thiết lập khởi động cùng hệ thống
systemctl enable docker && systemctl start docker
Kiểm tra phiên bản
docker  --version

4、Cài đặt kubeadm, kubelet và kubectl
#Chỉ định nguồn cài đặt
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

#Ánh xạ địa chỉ trong /etc/hosts
vim /etc/hosts
192.168.226.128 control-plane
192.168.226.129 worker1
192.168.226.130 worker2
--->wq

#Chỉ định phiên bản cài đặt
yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0
rpm -qa | grep kube

#Thiết lập khởi động cùng hệ thống
systemctl enable kubelet

#Tắt swap
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab  
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system


######Vị trí thực hiện: control-plane
mkdir k8s && cd k8s
kubeadm init \
--apiserver-advertise-address=192.168.226.128 \				#Địa chỉ IP cục bộ
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.15.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

mkdir k8s && cd k8s
kubeadm init \
--apiserver-advertise-address=192.168.226.128 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.15.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

#Sử dụng công cụ kubectl
mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

###Ghi lại lệnh kubeadm join xxxxxxxxx(dùng để thêm nút worker)
kubeadm join 192.168.226.128:6443 --token vvbp4o.91yfaklznloczfnb \
    --discovery-token-ca-cert-hash sha256:ace39b8db9d1c40fe31b85ff2923eedbe16d6587491eca10488fa9c31041faea



#Cài đặt plugin mạng Pod (flannel)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml


#Kiểm tra trạng thái thành phần && Kiểm tra trạng thái nút (chờ một lúc)
kubectl get cs
kubectl get nodes


#####Vị trí thực hiện: worker
#Lấy ảnh flannel từ docker
#Phiên bản 0.11.0 quá cũ, phiên bản 1.22.x trở lên không nên dùng
docker pull lizhenliang/flannel:v0.11.0-amd64

swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab  
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

#Thêm nút (kubeadm join, token của nút sẽ thay đổi theo chu kỳ, dùng lệnh kubeadm token list để xem token)
kubeadm join 192.168.226.128:6443 --token ld7odd.egdzg4z9h37dvumc \
    --discovery-token-ca-cert-hash sha256:8e904682e6c1d670cf8b5524b3e03d1e5e5cb4156984f87414f093dc80e1fb23 

#Nếu gặp lỗi thì tải lại cấu hình (nút worker)
kubeadm reset
#Tải lại cấu hình (nút master)
mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
Phải xóa cấu hình trên để tiếp tục khởi tạo kube init

#Kiểm tra trạng thái nút trên master "ba nút đều sẵn sàng"
kubectl get nodes
#Gắn nhãn nút
kubectl label node worker1 node-role.kubernetes.io/node=node
kubectl label node worker2 node-role.kubernetes.io/node=node

#kubectl get pods -n kube-system kiểm tra trạng thái pod "1/1 Running" là bình thường
kubectl get pods -n kube-system

####Tạo lại token
#Nếu token hết hạn hoặc mất, cần tạo token mới
kubeadm token create
#Liệt kê token
kubeadm token list  | awk -F" " '{print $1}' |tail -n 1
#Rồi lấy giá trị hash của chứng chỉ công khai CA
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed  's/^ .* //'

#Thay thế token và sha256 trong lệnh join:
kubeadm join 192.168.226.128:6443 --token ld7odd.egdzg4z9h37dvumc \
    --discovery-token-ca-cert-hash sha256:8e904682e6c1d670cf8b5524b3e03d1e5e5cb4156984f87414f093dc80e1fb23 

Cài đặt và cấu hình kiểm tra K8S trên môi trường Tencent Cloud Sử dụng kubeadm cài đặt K8S trên Tencent Cloud

Thẻ: kubeadm Kubernetes CentOS 7 CNI docker

Đăng vào ngày 21 tháng 6 lúc 18:44