一、安裝自動補全
? ? ? ? 主節點安裝就可以
yum install -y bash-completion
echo 'source <(kubectl completion bash)' >>~/.bashrc
kubectl completion bash >/etc/bash_completion.d/kubectl
二、安裝Calico網絡插件(主節點)
? ? ? ? 下載文件
wget https://calico-v3-25.netlify.app/archive/v3.25/manifests/calico.yaml
? ? ? ? 修改配置文件
sed -i 's#docker.io#m.daocloud.io/docker.io#g' calico.yaml
? ? ? ? 如果你沒有進行某些自定義安裝,可以直接應用
kubectl apply -f calico.yaml
? ? ? ? 然后耐心等待(有可能因為網絡問題拉鏡像失敗),可以不斷查看空間kube-system下的所有Pod(最終正常應該都是running)
kubectl get pods -n kube-system
????????查看Calico插件在各節點的部署情況(正常應該都是running)
kubectl get po -A -o wide | grep calic
? ? ? ? 查看集群狀態
kubectl get nodes -A
? ? ? ? 正常應該都是Ready的狀態了。?
三、安裝Kubernetes Dashboard
1、安裝
????????Helm 更適合生產環境,kubectl apply 更適合學習和簡單部署。
(1)方式1-基于helm安裝
????????我是用這種方式遇到問題,懶得研究,就卸載了直接使用kubectl安裝了。
# 下載helm
wget https://get.helm.sh/helm-v3.16.1-linux-amd64.tar.gz# 解壓
tar zxf helm-v3.16.1-linux-amd64.tar.gz# 移動到/usr/local
mv linux-amd64/helm /usr/local/bin/helm && rm -rf linux-amd64# 加一個chart 倉庫,這里用的阿里云
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts# 查看列表
helm search repo aliyun
????????Helm 倉庫的核心作用?是?集中化管理 Charts,存儲預定義的 Kubernetes 應用模板(如 MySQL、Nginx、Redis 的部署配置)。類似 apt/yum 的軟件源,但針對的是 Kubernetes 應用。
????????通過 helm install 快速部署應用,無需手動編寫復雜的 YAML 文件。
? ? ? ? 比如
helm install my-mysql aliyun/mysql
? ? ? ? 添加倉庫
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
????????使用kubernetes儀表板圖表部署名為“kubernetes儀表板”的Helm Release
helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard
? ? ?設置訪問端口
kubectl edit svc kubernetes-dashboard-kong-proxy -n kubernetes-dashboard
????????修改service的type類型為NodePort,使其可以外部訪問,修改之后查看結果
kubectl -n kubernetes-dashboard get svc
(2)方式2-直接使用?kubectl安裝
????????下載配置文件
https://github.com/kubernetes/dashboard/blob/v2.0.0-beta4/aio/deploy/recommended.yaml
? ? ? ?下載完修改這個文件,找到鏡像文件修改為國內的源
image: registry.cn-hangzhou.aliyuncs.com/google_containers/dashboard:v2.7.0
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-scraper:v1.0.8
? ? ? ? 然后進行應用
kubectl apply -f recommended.yaml
????????有幾種方式可以訪問,這里選擇NodePort
kubectl patch svc kubernetes-dashboard -n kubernetes-dashboard -p '{"spec":{"type":"NodePort"}}'
? ? ? ? 查看服務狀態
kubectl -n kubernetes-dashboard get svc kubernetes-dashboard
kubectl get svc -n kubernetes-dashboard
2、創建訪問賬號
????????編輯文件添加內容
vim /etc/kubernetes/dashadm.yaml
? ? ? ? 添加下面的內容
#創建服務帳戶
apiVersion: v1
kind: ServiceAccount
metadata:name: admin-usernamespace: kubernetes-dashboard
---
#創建群集角色綁定
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin-user
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:
- kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard
? ? ? ? 使其生效
kubectl apply -f /etc/kubernetes/dashadm.yaml
? ? ? ? 獲取訪問令牌的token的命令
kubectl -n kubernetes-dashboard create token admin-user
3、生成token進行登錄
?????????生成token
kubectl -n kubernetes-dashboard create token admin-user
? ? ? ? ?進行登錄
https://172.25.116.101:31874/
? ? ? ? 使用token登錄
4、遇到問題可以重新部署
? ? ? ? 如果是鏡像拉取的問題,可以使用這個命令查看
kubectl describe pod -n kubernetes-dashboard
????????首先清理現有的錯誤 Pod
kubectl delete deployment --all -n kubernetes-dashboard
? ? ? ? ?然后刪除
kubectl delete namespace kubernetes-dashboard
????????然后重新部署
kubectl create namespace kubernetes-dashboardkubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
四、部署測試
? ? ? ? 我們創建一個nginx.yaml,隨便放在哪里。
? ? ? ? 添加如下內容
apiVersion: v1
kind: Pod
metadata:name: nginxlabels:app.kubernetes.io/name: MyApp
spec:containers:- name: nginximage: ccr.ccs.tencentyun.com/library/nginx:latestports:- containerPort: 80name: http-web-svc
---
apiVersion: v1
kind: Service
metadata:name: my-service
spec:type: NodePortselector:app.kubernetes.io/name: MyAppports:# 默認情況下,為了方便起見,`targetPort` 被設置為與 `port` 字段相同的值。- port: 80targetPort: 80# 可選字段# 默認情況下,為了方便起見,Kubernetes 控制平面會從某個范圍內分配一個端口號#(默認:30000-32767)nodePort: 30007
? ? ? ? 然后應用
kubectl apply -f nginx.yaml
? ? ? ? 查看狀態
kubectl get pod,svc
? ? ? ? 訪問這個地址
http://172.25.116.101:30007/