一、簡(jiǎn)介
二、部署規(guī)劃

所有節(jié)點(diǎn)上都需要安裝以下組件:
kubeadm:用來(lái)初始化集群(Cluster)
kubelet:運(yùn)行在集群中的所有節(jié)點(diǎn)上,負(fù)責(zé)啟動(dòng) pod 和 容器。
kubectl:這個(gè)是 Kubernetes 命令行工具。通過(guò) kubectl 可以部署和管理應(yīng)用,查看各種資源,創(chuàng)建、刪除和更新各種組件。
三、主機(jī)初始化操作
1、操作系統(tǒng)信息
? ?操作系統(tǒng)版本: #cat /etc/redhat-release
? ?CentOS Linux release 7.8.2003 (Core)
? ?主機(jī)名:#uname -a
? ?Linux bogon 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
2、修改master和node主機(jī)名和hosts文件
? ? hostnamectl set-hostname master01
hostnamectl set-hostname worker01
hostnamectl set-hostname worker02
cat >> /etc/hosts <<EOF
192.168.120.10 master01
192.168.120.11 worker01
192.168.120.12 worker02
EOF
[root@bogon ~]# cat /etc/hosts
127.0.0.1? ?localhost localhost.localdomain localhost4 localhost4.localdomain4
::1? ? ? ? ?localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.120.10 master01
192.168.120.11 worker01
192.168.120.12 worker02
3、安裝chrony實(shí)現(xiàn)所有服務(wù)器間的時(shí)間同步
? ? # yum install chrony -y
# systemctl? start chronyd
# sed -i -e '/^server/s/^/#/' -e '1a server ntp.aliyun.com iburst' /etc/chrony.conf
# systemctl? restart chronyd
# timedatectl set-timezone Asia/Shanghai
# timedatectl
[root@bogon ~]#? timedatectl
? ? ? Local time: Sun 2021-03-07 20:06:03 CST
? Universal time: Sun 2021-03-07 12:06:03 UTC
? ? ? ? RTC time: Sun 2021-03-07 12:06:02
? ? ? ?Time zone: Asia/Shanghai (CST, +0800)
? ? ?NTP enabled: yes
NTP synchronized: yes
?RTC in local TZ: no
? ? ? DST active: n/a
4、關(guān)閉master和node的防火墻和selinux
? ? # systemctl stop firewalld && systemctl disable firewalld?
# sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config?
# 主要查看SELINUX=disabled,如果SELINUX=eabled 需要修改為disabled?
# setenforce 0
?# getenforce
?# 關(guān)掉swap
?# swapoff -a?
# 要永久禁掉swap分區(qū),打開(kāi)如下文件注釋掉swap那一行
# vi /etc/fstab
[root@bogon ~]# more? /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Mar? 4 04:12:45 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /? ? ? ? ? ? ? ? ? ? ? ?xfs? ? ?defaults? ? ? ? 0 0
UUID=e078410b-2654-4884-a113-dede3e7d3fc5 /boot? ? ? ? ? ? ? ? ? ?xfs? ? ?defaults? ? ? ? 0 0
#/dev/mapper/centos-swap swap? ? ? ? ? ? ? ? ? ? swap? ? defaults? ? ? ? 0 0
5、配置系統(tǒng)內(nèi)核參數(shù)和調(diào)優(yōu)?
配置sysctl內(nèi)核參數(shù)
$ cat > /etc/sysctl.conf <<EOF
vm.max_map_count=262144
net.ipv4.ip_forward = 1
#net.bridge.bridge-nf-call-ip6tables = 1
#net.bridge.bridge-nf-call-iptables = 1
EOF
生效文件
$ sysctl -p?
[root@bogon ~]# sysctl -p?
vm.max_map_count = 262144
net.ipv4.ip_forward = 1
修改Linux 資源配置文件,調(diào)高ulimit最大打開(kāi)數(shù)和systemctl管理的服務(wù)文件最大打開(kāi)數(shù)
$ echo "* soft nofile 655360" >> /etc/security/limits.conf
$ echo "* hard nofile 655360" >> /etc/security/limits.conf
$ echo "* soft nproc 655360"? >> /etc/security/limits.conf
$ echo "* hard nproc 655360"? >> /etc/security/limits.conf
$ echo "* soft? memlock? unlimited"? >> /etc/security/limits.conf
$ echo "* hard memlock? unlimited"? >> /etc/security/limits.conf
$ echo "DefaultLimitNOFILE=1024000"? >> /etc/systemd/system.conf?
$ echo "DefaultLimitNPROC=1024000"? >> /etc/systemd/system.conf
6、配置主機(jī)互信
? ?配置ssh互信,那么節(jié)點(diǎn)之間就能無(wú)密訪問(wèn),方便日后執(zhí)行自動(dòng)化部署
? #每臺(tái)機(jī)器都執(zhí)行:?
# ssh-keygen
【# 每臺(tái)機(jī)器執(zhí)行這個(gè)命令, 一路回車(chē)即可
# ssh-copy-id node 】
#每臺(tái)機(jī)器都執(zhí)行以下命令:
ssh-copy-id master01
ssh-copy-id worker01
ssh-copy-id worker02
四、master和node節(jié)點(diǎn)都部署docker
# 安裝依賴包
# yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加docker軟件包的yum源
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 關(guān)閉測(cè)試版本list(只顯示穩(wěn)定版)
# yum-config-manager --enable docker-ce-edge
# yum-config-manager --enable docker-ce-test
# 更新yum包索引
#? yum makecache fast
# 安裝docker
# 直接安裝Docker CE
#? yum install docker-ce
# 若需要安裝指定版本的Docker CE
# yum list docker-ce --showduplicates|sort -r? ? ? #找到需要安裝的
# yum install docker-ce-18.06.0.ce -y? ??
#啟動(dòng)docker
# systemctl start docker & systemctl enable docker
#配置docker 使用阿里云加速
#vi /etc/docker/daemon.json?
{??
?"registry-mirrors": ["https://q2hy3fzi.mirror.aliyuncs.com"]
}
#systemctl daemon-reload && systemctl restart docker
五、master和node上安裝k8s 工具
更換yum源為阿里源
# vi /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
# yum安裝k8s工具
# yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
# 或指定版本安裝
# yum install -y kubelet-1.19.4 kubeadm-1.19.4 kubectl-1.19.4? --disableexcludes=kubernetes
# 啟動(dòng)k8s服務(wù)
# systemctl enable kubelet && systemctl start kubelet
# 查看版本號(hào)
# kubeadm version
配置iptable
# vi? /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness=0
# 保存后執(zhí)行
# sysctl --system
[root@worker02 ~]# vi /etc/sysctl.conf
[root@worker02 ~]#?
[root@worker02 ~]#?
[root@worker02 ~]# sysctl -p
vm.max_map_count = 262144
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
六、master節(jié)點(diǎn)獲取要下載的鏡像列表及初始化
[root@master01 ~]# kubeadm config images list
W0307 20:52:52.078151? ?10223 version.go:102] could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.txt": Get "https://storage.googleapis.com/kubernetes-release/release/stable-1.txt": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
W0307 20:52:52.078791? ?10223 version.go:103] falling back to the local client version: v1.20.4
k8s.gcr.io/kube-apiserver:v1.20.4
k8s.gcr.io/kube-controller-manager:v1.20.4
k8s.gcr.io/kube-scheduler:v1.20.4
k8s.gcr.io/kube-proxy:v1.20.4
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.13-0
k8s.gcr.io/coredns:1.7.0
# 制作下載鏡像的腳本 可按照如下的設(shè)置
# vi docker.sh
!/bin/bash
docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.20.4
docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.20.4? k8s.gcr.io/kube-apiserver:v1.20.4
docker rmi? ?registry.aliyuncs.com/google_containers/kube-apiserver:v1.20.4
docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.20.4
docker tag? ?registry.aliyuncs.com/google_containers/kube-controller-manager:v1.20.4? ? k8s.gcr.io/kube-controller-manager:v1.20.4
docker rmi? registry.aliyuncs.com/google_containers/kube-controller-manager:v1.20.4
docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.20.4
docker tag? registry.aliyuncs.com/google_containers/kube-scheduler:v1.20.4? ?k8s.gcr.io/kube-scheduler:v1.20.4
docker rmi? ?registry.aliyuncs.com/google_containers/kube-scheduler:v1.20.4
docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.20.4
docker tag? registry.aliyuncs.com/google_containers/kube-proxy:v1.20.4? ?k8s.gcr.io/kube-proxy:v1.20.4
docker rmi? ?registry.aliyuncs.com/google_containers/kube-proxy:v1.20.4
docker pull registry.aliyuncs.com/google_containers/etcd:3.4.13-0
docker tag? registry.aliyuncs.com/google_containers/etcd:3.4.13-0? ? ? k8s.gcr.io/etcd:3.4.13-0
docker rmi? ?registry.aliyuncs.com/google_containers/etcd:3.4.13-0
docker pull registry.aliyuncs.com/google_containers/pause:3.2
docker tag registry.aliyuncs.com/google_containers/pause:3.2? k8s.gcr.io/pause:3.2
docker rmi registry.aliyuncs.com/google_containers/pause:3.2
docker pull coredns/coredns:1.7.0
docker tag? ?coredns/coredns:1.7.0? ? ? k8s.gcr.io/coredns:1.7.0
docker rmi? coredns/coredns:1.7.0
[root@master01 ~]# docker images
REPOSITORY? ? ? ? ? ? ? ? ? ? ? ? ? ?TAG? ? ? ? IMAGE ID? ? ? ?CREATED? ? ? ? ?SIZE
k8s.gcr.io/kube-proxy? ? ? ? ? ? ? ? v1.20.4? ? c29e6c583067? ?2 weeks ago? ? ?118MB
k8s.gcr.io/kube-controller-manager? ?v1.20.4? ? 0a41a1414c53? ?2 weeks ago? ? ?116MB
k8s.gcr.io/kube-apiserver? ? ? ? ? ? v1.20.4? ? ae5eb22e4a9d? ?2 weeks ago? ? ?122MB
k8s.gcr.io/kube-scheduler? ? ? ? ? ? v1.20.4? ? 5f8cb769bd73? ?2 weeks ago? ? ?47.3MB
k8s.gcr.io/etcd? ? ? ? ? ? ? ? ? ? ? 3.4.13-0? ?0369cf4303ff? ?6 months ago? ? 253MB
k8s.gcr.io/coredns? ? ? ? ? ? ? ? ? ?1.7.0? ? ? bfe3a36ebd25? ?8 months ago? ? 45.2MB
k8s.gcr.io/pause? ? ? ? ? ? ? ? ? ? ?3.2? ? ? ? 80d28bedfe5d? ?12 months ago? ?683kB
#master 初始化操作?
# kubeadm init? \
--apiserver-advertise-address=192.168.120.10 \
--image-repository registry.aliyuncs.com/google_containers? \
--kubernetes-version v1.20.4 \
--service-cidr=10.96.0.0/16? \
--pod-network-cidr=10.244.0.0/16
【
kubeadm init? \
--apiserver-advertise-address=192.168.106.102 \? ? ? ? ? ? ? ? ? ? ? #指定master監(jiān)聽(tīng)的地址
--image-repository registry.aliyuncs.com/google_containers? \? ?#指定下載源
--kubernetes-version v1.18.0 \? ? ? ? ? ? ? ? ? ? #指定kubernetes版本
--service-cidr=10.96.0.0/12? ? ? ? ? ? ? ? ? ? ? ? #設(shè)置集群內(nèi)部的網(wǎng)絡(luò)
--pod-network-cidr=10.244.0.0/16? ? ? ? ? ? ? ?#設(shè)置pod的網(wǎng)絡(luò)
】
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
? mkdir -p $HOME/.kube
? sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
? sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
? export KUBECONFIG=/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/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.120.10:6443 --token u1qw31.qacahi507rjw0me4 \
? ? --discovery-token-ca-cert-hash sha256:54b013bab495f94242270028e2175de3593dc80a8bc763b63aed91924f61a1fa
#集群主節(jié)點(diǎn)安裝成功,這里要記得保存這條命令,以便之后各個(gè)節(jié)點(diǎn)加入集群:
You can now join any number of machines by running the following on each node
as root:
kubeadm join 192.168.120.10:6443 --token netw4z.cwl1q17m2kgbiekv \
? ? --discovery-token-ca-cert-hash sha256:2e0760511c65fff0a561b79fff019f6c632d8b09df3ef3479cb09e95d68e4486
#配置kubetl認(rèn)證信息
#echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
#source ~/.bash_profile
或
#export KUBECONFIG=/etc/kubernetes/admin.conf
#source ~/.bash_profile
【master節(jié)點(diǎn)上執(zhí)行:
mkdir -p $HOME/.kube
? sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
? sudo chown $(id -u):$(id -g) $HOME/.kube/config
? #echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
#source ~/.bash_profile】
#查看一下集群pod,確認(rèn)個(gè)組件都處于Running 狀態(tài)
#注意由于master節(jié)點(diǎn)上存在污點(diǎn),所以coredns 暫時(shí)還無(wú)法正常啟動(dòng)。
[[root@master01 ~]# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
[root@master01 ~]# source ~/.bash_profile
[root@master01 ~]# kubectl? get pod -n kube-system
NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?READY? ?STATUS? ? RESTARTS? ?AGE
coredns-74ff55c5b-4n4wm? ? ? ? ? ? 0/1? ? ?Pending? ?0? ? ? ? ? 6m10s
coredns-74ff55c5b-g6xr4? ? ? ? ? ? 0/1? ? ?Pending? ?0? ? ? ? ? 6m10s
etcd-master01? ? ? ? ? ? ? ? ? ? ? 1/1? ? ?Running? ?0? ? ? ? ? 6m25s
kube-apiserver-master01? ? ? ? ? ? 1/1? ? ?Running? ?0? ? ? ? ? 6m25s
kube-controller-manager-master01? ?1/1? ? ?Running? ?0? ? ? ? ? 6m25s
kube-proxy-lcv5t? ? ? ? ? ? ? ? ? ?1/1? ? ?Running? ?0? ? ? ? ? 6m10s
kube-scheduler-master01? ? ? ? ? ? 1/1? ? ?Running? ?0? ? ? ? ? 6m25s
七、 給集群部署flannel 網(wǎng)絡(luò)組件
#配置flannel網(wǎng)絡(luò)
#mkdir -p /root/k8s/
#cd /root/k8s
#yum install wget
#wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
查看需要下載的鏡像
# cat kube-flannel.yml |grep image|uniq
image: quay.io/coreos/flannel:v0.13.1-rc2
下載鏡像
# docker pull quay.io/coreos/flannel:v0.13.1-rc2?
部署插件
# kubectl apply -f? kube-flannel.yml
注意:如果 https://raw.githubusercontent.com 不能訪問(wèn)請(qǐng)使用:
?# 打開(kāi)https://site.ip138.com/raw.Githubusercontent.com/ 輸入raw.githubusercontent.com 查詢IP地址

?# 修改hosts Ubuntu,CentOS及macOS直接在終端輸入
# vi /etc/hosts
185.199.109.133 raw.githubusercontent.com
199.232.68.133 raw.githubusercontent.com
如果yml中的"Network": "10.244.0.0/16"和kubeadm init xxx --pod-network-cidr不一樣,就需要修改成一樣的。不然可能會(huì)使得Node間Cluster IP不通。
由于我上面的kubeadm init xxx --pod-network-cidr就是10.244.0.0/16。所以此yaml文件就不需要更改了。
八、配置 k8s集群 命令補(bǔ)全
#(僅master)
#yum install -y bash-completion
#source <(kubectl completion bash)
#echo "source <(kubectl completion bash)" >> ~/.bashrc
#source? ~/.bashrc
九、Node節(jié)點(diǎn)加入集群【在node節(jié)點(diǎn)執(zhí)行】
? ? kubeadm join 192.168.120.10:6443 --token netw4z.cwl1q17m2kgbiekv \
? ? --discovery-token-ca-cert-hash sha256:2e0760511c65fff0a561b79fff019f6c632d8b09df3ef3479cb09e95d68e4486

檢查下集群的狀態(tài):
?# kubectl get cs
?# kubectl get pod? --all-namespaces
?# kubectl get node


若出現(xiàn)如下的報(bào)錯(cuò),可以參考這篇博文解決:https://llovewxm1314.blog.csdn.net/article/details/108458197

在/etc/kubernetes/manifests下的kube-controller-manager.yaml和kube-scheduler.yaml設(shè)置的默認(rèn)端口是0
#cd /etc/kubernetes/manifests
#vi kube-controller-manager.yaml? 注釋27行# - --port=0
#vi kube-scheduler.yaml 注釋掉 # - --port=0
重啟所有節(jié)點(diǎn)kubelet:
systemctl restart kubelet.service

排查錯(cuò)誤命令:
kubectl describe kube-flannel-ds-xstn --namespace=kube-system
kubectl --namespace kube-system logs kube-flannel-ds-xstnz
清除配置,重新安裝(需要重新安裝主機(jī)):
kubectl log? kube-flannel-ds-sjs4p -n? ?kube-system? ? ?-f? 啟動(dòng)有問(wèn)題查看日志詳細(xì)信息`
`kubectl delete -f kube-flannel.yml #刪除pod`
```bash
kubeadm reset -f
modprobe -r ipip
lsmod
rm -rf ~/.kube/
rm -rf /etc/kubernetes/
rm -rf /etc/systemd/system/kubelet.service.d
rm -rf /etc/systemd/system/kubelet.service
rm -rf /usr/bin/kube*
rm -rf /etc/cni
rm -rf /opt/cni
rm -rf /var/lib/etcd
rm -rf /var/etcd
十、部署 Dashboard
? ? ?在Kubernetes集群中創(chuàng)建一個(gè) nginx pod,然后暴露端口,驗(yàn)證是否正常訪問(wèn):
? ? ?#kubectl create deployment nginx --image=nginx
? ? ?#kubectl expose deployment nginx --port=80 --type=NodePort
? ? ?#kubectl get pods,svc

訪問(wèn)地址:http://NodeIP:Port ,此例就是:http://192.168.120.10:32251

十一、部署 Dashboard
下載Dashboard插件配置文件
#master01節(jié)點(diǎn)下載鏡像【master 一個(gè)節(jié)點(diǎn)安裝】
#docker pull kubernetesui/dashboard:v2.2.0
#docker pull kubernetesui/metrics-scraper:v1.0.6

#下載配置
#cd /root/k8s
#wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml
#mv recommended.yaml? kubernetes-dashboard.yaml
編輯kubernetes-dashboard.yaml文件,在Dashboard Service中添加type: NodePort,暴露Dashboard服務(wù)
kind: Service
apiVersion: v1
metadata:
? labels:
? ? k8s-app: kubernetes-dashboard
? name: kubernetes-dashboard
? namespace: kube-system
spec:
? type: NodePort
? ports:
? ? - port: 443
? ? ? targetPort: 8443
? selector:
k8s-app: kubernetes-dashboard

執(zhí)行命令
# kubectl create -f kubernetes-dashboard.yaml?
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
創(chuàng)建sa并綁定默認(rèn)的cluster-admin管理員集群角色:
#kubectl create serviceaccount dashboard-admin -n? kubernetes-dashboard
#kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin
登陸kubernetes-dashboard:
#kubectl get secret -n kubernetes-dashboard

#kubectl describe secret dashboard-admin-token-5mjtx? -n kubernetes-dashboard
注意:查看kubernetes-dashboard 命令:
#kubectl --namespace=kubernetes-dashboard get service kubernetes-dashboard

解決Google瀏覽器不能打開(kāi)kubernetes dashboard方法
執(zhí)行命令
#mkdir key && cd key
生成證書(shū)
#openssl genrsa -out dashboard.key 2048
#openssl req -days 36000 -new -out dashboard.csr -key dashboard.key -subj '/CN=dashboard-cert'
#openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
刪除原有的證書(shū)secret
#kubectl delete secret kubernetes-dashboard-certs -n kubernetes-dashboard
創(chuàng)建新的證書(shū)secret
#kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kubernetes-dashboard
查看pod
#kubectl get pod -n kubernetes-dashboard

重啟pod
#kubectl delete pod? kubernetes-dashboard-9f9799597-ct4sp? -n kubernetes-dashboard

查看結(jié)果
kubectl get service -n kubernetes-dashboard? -o wide

十二、登錄集群dashboard面板
? ? #查看svc地址的nodeport? 端口
# kubectl? get svc -n kubernetes-dashboard

#獲取令牌登錄token
#kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')



十三、部署管理工具
? ? ? Lens 是一個(gè)開(kāi)源的管理 Kubernetes 集群的 IDE,支持 MacOS, Windows 和 Linux。通過(guò) Lens,我們可以很方便地管理多個(gè) Kubernetes 集群。官方網(wǎng)址為:https://k8slens.dev/

十四、參考文檔
https://www.cnblogs.com/wenyang321/p/14050893.html
https://cloud.tencent.com/developer/article/1509412
https://kuboard.cn/install/install-k8s.html