安装 Dashboard
安装 Dashboard 2.4.0
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
查询命名空间
[root@k8smaster ~]# kubectl get namespace
NAME STATUS AGE
default Active 3d3h
kube-node-lease Active 3d3h
kube-public Active 3d3h
kube-system Active 3d3h
kubernetes-dashboard Active 2m35s
查看控制面板 kubectl get deploy -n kubernetes-dashboard
查看服务kubectl get svc -n kubernetes-dashboard
查看pod kubectl get pod -n kubernetes-dashboard
以上查询没有问题后下载文件修改
下载yaml wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
修改 vi recommended.yaml
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
ports:
- port: 443
targetPort: 8443
#添加下面两行端口和类型
nodePort: 30003
type: NodePort
selector:
k8s-app: kubernetes-dashboard
在两个kind: Deployment
下面添加nodeName: k8smaster
master主机名
kind: Deployment
apiVersion: apps/v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s-app: kubernetes-dashboard
template:
metadata:
labels:
k8s-app: kubernetes-dashboard
spec:
#添加下面一行master主机名
nodeName: k8smaster
containers:
- name: kubernetes-dashboard
image: kubernetesui/dashboard:v2.4.0
imagePullPolicy: Always
ports:
- containerPort: 8443
protocol: TCP
args:
- --auto-generate-certificates
第二个kind: Deployment
添加master主机名
kind: Deployment
apiVersion: apps/v1
metadata:
labels:
k8s-app: dashboard-metrics-scraper
name: dashboard-metrics-scraper
namespace: kubernetes-dashboard
spec:
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s-app: dashboard-metrics-scraper
template:
metadata:
labels:
k8s-app: dashboard-metrics-scraper
spec:
#添加下面一行master主机名
nodeName: k8smaster
securityContext:
seccompProfile:
type: RuntimeDefault
containers:
- name: dashboard-metrics-scraper
image: kubernetesui/metrics-scraper:v1.0.7
ports:
- containerPort: 8000
protocol: TCP
livenessProbe:
执行 kubectl apply -f recommended.yaml
稍后执行kubectl get pod -n kubernetes-dashboard
如下结果说明成功
[root@k8smaster ~]# kubectl get pod -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-5d56965b9-sf892 1/1 Running 1 (9h ago) 9h
kubernetes-dashboard-5dc9b97bcf-w554g 1/1 Running 1 (9h ago) 9h
[root@k8smaster ~]# kubectl get all -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
pod/dashboard-metrics-scraper-5d56965b9-sf892 1/1 Running 1 (9h ago) 9h
pod/kubernetes-dashboard-5dc9b97bcf-w554g 1/1 Running 1 (9h ago) 9h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/dashboard-metrics-scraper ClusterIP 10.66.3.140 <none> 8000/TCP 9h
service/kubernetes-dashboard NodePort 10.66.21.166 <none> 443:30003/TCP 9h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/dashboard-metrics-scraper 1/1 1 1 9h
deployment.apps/kubernetes-dashboard 1/1 1 1 9h
NAME DESIRED CURRENT READY AGE
replicaset.apps/dashboard-metrics-scraper-5d56965b9 1 1 1 9h
replicaset.apps/kubernetes-dashboard-5dc9b97bcf 1 1 1 9h
查看访问信息kubectl cluster-info
[root@k8smaster ~]# kubectl cluster-info
Kubernetes control plane is running at https://192.168.116.103:6443
CoreDNS is running at https://192.168.116.103:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
访问 https://192.168.116.103:30003/
获取token
kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
如果kind: Deployment 两个地方不修改 pod异常状态CrashLoopBackOff
[root@k8smaster ~]# kubectl get pod -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-799d786dbf-p79d5 1/1 Running 0 96m
kubernetes-dashboard-6b6b86c4c5-hlz7q 0/1 CrashLoopBackOff 20 (3m43s ago) 96m
查看日志 kubectl logs kubernetes-dashboard-6b6b86c4c5-hlz7q -n kubernetes-dashboard
[root@k8smaster ~]# kubectl logs kubernetes-dashboard-6b6b86c4c5-hlz7q -n kubernetes-dashboard
2022/01/21 13:05:33 Starting overwatch
2022/01/21 13:05:33 Using namespace: kubernetes-dashboard
2022/01/21 13:05:33 Using in-cluster config to connect to apiserver
2022/01/21 13:05:33 Using secret token for csrf signing
2022/01/21 13:05:33 Initializing csrf token from kubernetes-dashboard-csrf secret
panic: Get "https://10.66.0.1:443/api/v1/namespaces/kubernetes-dashboard/secrets/kubernetes-dashboard-csrf": dial tcp 10.66.0.1:443: i/o timeout
goroutine 1 [running]:
github.com/kubernetes/dashboard/src/app/backend/client/csrf.(*csrfTokenManager).init(0xc00055faf0)
/home/runner/work/dashboard/dashboard/src/app/backend/client/csrf/manager.go:41 +0x305
github.com/kubernetes/dashboard/src/app/backend/client/csrf.NewCsrfTokenManager(...)
/home/runner/work/dashboard/dashboard/src/app/backend/client/csrf/manager.go:66
github.com/kubernetes/dashboard/src/app/backend/client.(*clientManager).initCSRFKey(0xc00041a080)
/home/runner/work/dashboard/dashboard/src/app/backend/client/manager.go:502 +0x94
github.com/kubernetes/dashboard/src/app/backend/client.(*clientManager).init(0x18a56d9)
/home/runner/work/dashboard/dashboard/src/app/backend/client/manager.go:470 +0x32
github.com/kubernetes/dashboard/src/app/backend/client.NewClientManager(...)
/home/runner/work/dashboard/dashboard/src/app/backend/client/manager.go:551
main.main()
/home/runner/work/dashboard/dashboard/src/app/backend/dashboard.go:95 +0x1cf
错误原因是要部署到主节点