本篇文章参考kubernetes---dashboardv1.8.3版本安装详细步骤及 kubernetes-dashboard(1.8.3)部署与踩坑这两篇文章,详细写了自己部署过程中的操作、遇到的问题及解决方案。
kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended/kubernetes-dashboard.yaml
安装成功后查看pods
安装成功界面
发现问题: 显示ImagePullBackOff,这是因为docker镜像并没有能够下载下来。
curl -O https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended/kubernetes-dashboard.yaml
cat kubernetes-dashboard.yaml|grep kubernetes-dashboard
文件内容
docker pull gcrxio/kubernetes-dashboard-amd64:v1.10.1docker tag gcrxio/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
vi kubernetes-dashboard.yaml
imagePullPolicy: IfNotPresent
修改位置
kubectl delete -f kubernetes-dashboard.yamlkubectl create -f kubernetes-dashboard.yaml
使用命令查看是否dashboard镜像是否正常运行
成功页面
kubectl --namespace=kube-system describe pod <pod_name>
发现pod运行在副节点k8s-node1上,所以依然找不到docker镜像。
需要将dashboard调度到master节点上去。
输入命令,为master节点添加label
kubectl label node k8s-master type=master
在kubernetes-dashboard.yaml中添加nodeSelecor定义:
配置文件详情
配置完成之后,再重新安装dashboard,发现问题得到了解决。
在kubernetes-dashboard(1.8.3)部署与踩坑这篇文章中,提到了四种访问方式,下面只介绍我试过的两种访问方式
输入命令
kubectl proxy
启动成功界面:
启动成功界面
启动成功后,则在内网中的节点浏览器中可以进行访问,访问地址如下:
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
如果是vmware虚拟化节点,可以使用curl http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
查看是否能够访问。
如果Kubernetes API服务器是公开的,可以从外部访问的,就可以用API Server来访问。
访问的地址为https://<master-ip>:<apiserver-port>/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
但是可能返回的结果为
{ "kind": "Status", "apiVersion": "v1", "metadata": { }, "status": "Failure", "message": "services \"https:kubernetes-dashboard:\" is forbidden: User \"system:anonymous\" cannot get services/proxy in the namespace \"kube-system\"", "reason": "Forbidden", "details": { "name": "https:kubernetes-dashboard:", "kind": "services" }, "code": 403 }
这是因为没有进行认证,需要去创建一个证书
$HOME/.kube/config
中 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 生成client-certificate-data grep ‘client-certificate-data‘ ~/.kube/config | head -n 1 | awk ‘{print $2}‘ | base64 -d >> kubecfg.crt # 生成client-key-data grep ‘client-key-data‘ ~/.kube/config | head -n 1 | awk ‘{print $2}‘ | base64 -d >> kubecfg.key # 生成p12,这里会要求输入密码,记住这个密码 openssl pkcs12 -export -clcerts -inkey kubecfg.key -in kubecfg.crt -out kubecfg.p12 -name "kubernetes-client"
filezilla
导入到本机 登录界面
利用vi admin-user.yaml
命令创建admin-user.yaml文件,输入以下内容,来创建admin-user的服务账号,放在kube-system名称空间下:
apiVersion: v1kind: ServiceAccountmetadata: name: admin-user namespace: kube-system
输入命令kubectl create -f admin-user.yaml
来执行。
利用vi admin-user-role-binding.yaml
命令创建admin-user-role-binding.yaml文件,输入以下内容,来进行绑定
apiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRoleBindingmetadata: name: admin-userroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-adminsubjects:- kind: ServiceAccount name: admin-user namespace: kube-system
输入命令kubectl create -f admin-user-role-binding.yaml
来执行。
输入以下命令来创建用户token,利用token来登录dashboard:
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk ‘{print $1}‘)
将token复制到登录界面中:
登录界面
kubectl create -f http://mirror.faasx.com/kubernetes/heapster/deploy/kube-config/influxdb/influxdb.yamlkubectl create -f http://mirror.faasx.com/kubernetes/heapster/deploy/kube-config/influxdb/grafana.yamlkubectl create -f http://mirror.faasx.com/kubernetes/heapster/deploy/kube-config/influxdb/heapster.yamlkubectl create -f http://mirror.faasx.com/kubernetes/heapster/deploy/kube-config/rbac/heapster-rbac.yaml
当pod的状态全都变成了running,则能够使用。
pod状态