K8S部署web管理页面dashboard
官网https://kubernetes.io/zh/docs/tasks/access-application-cluster/web-ui-dashboard/先来看一张部署成功的效果图 ,dashboard作为k8s的webUI ,可以方便我们管理k8s集群以及应用。1kubernetes-dashboard.yaml文件apiVersion: v1kind: Secretmetadata:
官网 https://kubernetes.io/zh/docs/tasks/access-application-cluster/web-ui-dashboard/
先来看一张部署成功的效果图 ,dashboard作为k8s的web UI ,可以方便我们管理k8s集群以及应用。
1 kubernetes-dashboard.yaml 文件
apiVersion: v1
kind: Secret
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard-certs
namespace: kube-system
type: Opaque
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: kubernetes-dashboard-minimal
namespace: kube-system
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["create"]
- apiGroups: [""]
resources: ["configmaps"]
verbs: ["create"]
- apiGroups: [""]
resources: ["secrets"]
resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs"]
verbs: ["get", "update", "delete"]
- apiGroups: [""]
resources: ["configmaps"]
resourceNames: ["kubernetes-dashboard-settings"]
verbs: ["get", "update"]
- apiGroups: [""]
resources: ["services"]
resourceNames: ["heapster"]
verbs: ["proxy"]
- apiGroups: [""]
resources: ["services/proxy"]
resourceNames: ["heapster", "http:heapster:", "https:heapster:"]
verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kubernetes-dashboard-minimal
namespace: kube-system
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: kubernetes-dashboard
namespace: kube-system
---
kind: Deployment
apiVersion: apps/v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s-app: kubernetes-dashboard
template:
metadata:
labels:
k8s-app: kubernetes-dashboard
spec:
containers:
- name: kubernetes-dashboard
image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3
ports:
- containerPort: 8443
protocol: TCP
args:
- --auto-generate-certificates
volumeMounts:
- name: kubernetes-dashboard-certs
mountPath: /certs
- mountPath: /tmp
name: tmp-volume
livenessProbe:
httpGet:
scheme: HTTPS
path: /
port: 8443
initialDelaySeconds: 30
timeoutSeconds: 30
volumes:
- name: kubernetes-dashboard-certs
secret:
secretName: kubernetes-dashboard-certs
- name: tmp-volume
emptyDir: {}
serviceAccountName: kubernetes-dashboard
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
---
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 31080
selector:
k8s-app: kubernetes-dashboard
2 下载docker 镜像并导入到本地,这样因为本地存在就不会国外的仓库拉取镜像导致超时pull不下来,
链接:https://pan.baidu.com/s/1J0oebrRxKN3o1q-nnEUFcw 提取码:fio8
因为不知道要部署在那个node上,所以所有node节点都导入镜像
docker load < k8s.gcr.io#kubernetes-dashboard-amd64.tar
3 创建 dashboard
kubectl create -f kubernetes-dashboard.yaml
4 查看
kubectl get pods -n kube-system -o wide
5 访问
使用 https://10.238.162.34:31080/
点击接受风险并继续
获取token
# kubectl -n kube-system describe $(kubectl -n kube-system get secret -n kube-system -o name | grep namespace) | grep token
Name: namespace-controller-token-pb2zr
Type: kubernetes.io/service-account-token
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IlB3OWJyUkxqejBWenJ5eTI1ejdxU2gzcVBvTTJYUXBPdkZGN3ZLQ0s1ZU0ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJuYW1lc3BhY2UtY29udHJvbGxlci10b2tlbi1wYjJ6ciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJuYW1lc3BhY2UtY29udHJvbGxlciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImU2NDJhYWY4LWU4ODYtNDQwOC04NTZlLTg5NjU2NDdlMDZkZiIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTpuYW1lc3BhY2UtY29udHJvbGxlciJ9.eaCMquHlzVv-rziWC1F6_QcnyQzqYbbzzi0aZotlNx3QvSL9VgHXXYUqfZs9l2S0JdJA5nu4SSKDTU6846FFD0EXKXxq9PSFx1fXrodTn4n_ISkwFOlLXoCH0x6vV8mx9KmROQ7UJ9JMF0FkGs-PlIo-ZSqz9Z6dTYU4KbVk8pvHXOUfSAt9t2lwMup1QZxwokBfGlvu_jiA8GG-vcoOr9YI-OnaXFxgAkdVozJu0ouRMNR0MWdaIhmoELbyO6fGaqvh4PXyLl6g68JlP-vBljFaeOz8voA9sj7lsmFZVImJ4A0Icj_IxM7hfGJFo7ILyPddePP3kvpd9pj8h3Y4tg
选择令牌,粘贴之后
错误一 k8s pod状态为 ContainerCreating
kubectl get pods -n kube-system -o wide
kubectl describe pod kubernetes-dashboard-79d78c59fb-bz7n4 --namespace=kube-system
Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "8ce7a06dcbd203b43d356f3125c846258fc8bfa2d396a29216e041f171f233ff" network for pod "kubernetes-dashboard-79d78c59fb-bz7n4": networkPlugin cni failed to set up pod "kubernetes-dashboard-79d78c59fb-bz7n4_kube-system" network: failed to set bridge addr: "cni0" already has an IP address different from 10.244.1.1/24
解决 :
因为报错的pod在node1上,所以在node1上查看网卡
ifconfig
ifconfig cni0 down
ip link delete cni0
https://blog.csdn.net/Wuli_SmBug/article/details/104712653
错误二 k8s pod状态为ImagePullBackOff
手动下载images
然后所有的node节点
docker load < k8s.gcr.io#kubernetes-dashboard-amd64.tar
docker images
kubectl delete -f kubernetes-dashboard.yaml
kubectl create -f kubernetes-dashboard.yaml
kubectl get pods -n kube-system -o wide
在node2上已经为runing状态
错误三 火狐浏览器输出后 ip:port (10.238.162.34:31080)后, 页面显示乱码。
使用 https://10.238.162.34:31080/
点击接受风险并继续
获取token
# kubectl -n kube-system describe $(kubectl -n kube-system get secret -n kube-system -o name | grep namespace) | grep token
Name: namespace-controller-token-pb2zr
Type: kubernetes.io/service-account-token
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IlB3OWJyUkxqejBWenJ5eTI1ejdxU2gzcVBvTTJYUXBPdkZGN3ZLQ0s1ZU0ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJuYW1lc3BhY2UtY29udHJvbGxlci10b2tlbi1wYjJ6ciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJuYW1lc3BhY2UtY29udHJvbGxlciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImU2NDJhYWY4LWU4ODYtNDQwOC04NTZlLTg5NjU2NDdlMDZkZiIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTpuYW1lc3BhY2UtY29udHJvbGxlciJ9.eaCMquHlzVv-rziWC1F6_QcnyQzqYbbzzi0aZotlNx3QvSL9VgHXXYUqfZs9l2S0JdJA5nu4SSKDTU6846FFD0EXKXxq9PSFx1fXrodTn4n_ISkwFOlLXoCH0x6vV8mx9KmROQ7UJ9JMF0FkGs-PlIo-ZSqz9Z6dTYU4KbVk8pvHXOUfSAt9t2lwMup1QZxwokBfGlvu_jiA8GG-vcoOr9YI-OnaXFxgAkdVozJu0ouRMNR0MWdaIhmoELbyO6fGaqvh4PXyLl6g68JlP-vBljFaeOz8voA9sj7lsmFZVImJ4A0Icj_IxM7hfGJFo7ILyPddePP3kvpd9pj8h3Y4tg
选择令牌,粘贴之后
错误四
点击一些标签会报错 ,可能是因为版本过低。
error_outline Not Found (404)
the server could not find the requested resource
3 秒内重定向到上一个页面……
查看日志的命令
kubectl logs -f kubernetes-dashboard-bbfcb94b8-p9m2p -n kube-system
错误解决参考https://blog.csdn.net/ppppppushcar/article/details/102608450
https://www.cnblogs.com/wucaiyun1/p/11692204.html
删除
kubectl delete -f kubernetes-dashboard.yaml
查看
kubectl get pods -n kube-system -o wide
1.10 版本下载
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.0
修改文件 kubernetes-dashboard.yaml中的image为 registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.0
重新部署
kubectl create -f kubernetes-dashboard.yaml
获取token
[root@k8s-master ~]# kubectl -n kube-system describe $(kubectl -n kube-system get secret -n kube-system -o name | grep namespace) | grep token
Name: namespace-controller-token-pb2zr
Type: kubernetes.io/service-account-token
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IlB3OWJyUkxqejBWenJ5eTI1ejdxU2gzcVBvTTJYUXBPdkZGN3ZLQ0s1ZU0ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJuYW1lc3BhY2UtY29udHJvbGxlci10b2tlbi1wYjJ6ciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJuYW1lc3BhY2UtY29udHJvbGxlciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImU2NDJhYWY4LWU4ODYtNDQwOC04NTZlLTg5NjU2NDdlMDZkZiIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTpuYW1lc3BhY2UtY29udHJvbGxlciJ9.eaCMquHlzVv-rziWC1F6_QcnyQzqYbbzzi0aZotlNx3QvSL9VgHXXYUqfZs9l2S0JdJA5nu4SSKDTU6846FFD0EXKXxq9PSFx1fXrodTn4n_ISkwFOlLXoCH0x6vV8mx9KmROQ7UJ9JMF0FkGs-PlIo-ZSqz9Z6dTYU4KbVk8pvHXOUfSAt9t2lwMup1QZxwokBfGlvu_jiA8GG-vcoOr9YI-OnaXFxgAkdVozJu0ouRMNR0MWdaIhmoELbyO6fGaqvh4PXyLl6g68JlP-vBljFaeOz8voA9sj7lsmFZVImJ4A0Icj_IxM7hfGJFo7ILyPddePP3kvpd9pj8h3Y4tg
Google浏览器访问
参考
https://blog.csdn.net/java_zyq/article/details/82178152
https://www.cnblogs.com/liugp/p/12115945.html
git地址 https://github.com/kubernetes/dashboard
官方文档
更多推荐
所有评论(0)