部署环境


IP地址 主机名 功能
10.1.104.200 k8s-deploy 部署节点,不承担实际作用
10.1.104.201 k8s-master01 master节点
10.1.104.202 k8s-master02 master节点
10.1.104.203 k8s-master03 master节点
10.1.104.204 k8s-nginx 负载均衡节点,实际生产中应为HA架构
10.1.104.205 k8s-node01 node节点
10.1.104.206 k8s-node02 node节点
10.1.104.207 k8s-node03 node节点

部署插件_DashBoard


DashBoard提供集群基本的资源展示功能,使用Token认证。
DashBoard支持多种方式部署


Kubernetes部署Dashboard(proxy方式)(k8s-master):

获取DashBoard资源清单:

cd /opt/k8s/work
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

部署DashBoard并确认启动:

kubectl apply -f kubernetes-dashboard.yaml
kubectl get pod -n kube-system | grep dashboard

  • dashboard镜像在国外服务器上,可能会被墙;需要将”k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1”替换为”mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1”。

启动代理访问kube-apiserver的非安全端口:

kubectl proxy --accept-hosts="^10\.1\.104\.201$" --address='10.1.104.201' --port=8088
http://10.1.104.201:8088/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login,通过代理打开dashboard界面。
  • 为了集群安全,从1.7开始,dashboard只允许通过https访问。
    • 如果使用kube proxy则必须监听localhost或127.0.0.1,对于NodePort没有这个限制,但是仅建议在开发环境中使用。
    • 如果不满足这些条件的登录访问,在登录成功后浏览器不跳转,始终停在登录界面。

Kubernetes部署Dashboard(k8s-master):

创建客户端证书(Windows):

cd /opt/k8s/work
openssl pkcs12 -export -out admin.pfx -inkey admin-key.pem -in admin.pem -certfile ca.pem
sz admin.pfx ca.pem,下载admiun.pfx及ca.pem证书到本地电脑

在客户端上导入证书:

  • 使用mmc导入ca.pem证书。
  • 使用chrome浏览器(或你是用的浏览器)导入admin.pfx 证书;由于kube-apiserver使用双向验证,其客户端证书必须在ca证书链下。

使用api方式访问DashBoard:

https://10.1.104.201:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy

  • 客户端先验证服务端证书,通过后服务端会反向验证客户端证书,即向客户端发送一个接受的CA列表,由其签署的证书都视为可信任的证书。

使用Token生成用于DashBoard验证的kubeconfig文件(k8s-master):

创建token:

cd /opt/k8s/work

kubectl create sa dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

ADMIN_SECRET=$(kubectl get secrets -n kube-system | grep dashboard-admin | awk '{print $1}')
DASHBOARD_LOGIN_TOKEN=$(kubectl describe secret -n kube-system ${ADMIN_SECRET} | grep -E '^token' | awk '{print $2}')

使用token生成kubeconfig文件:

cd /opt/k8s/work
source /opt/k8s/bin/environment.sh

# 设置集群参数
kubectl config set-cluster kubernetes \
--certificate-authority=/etc/kubernetes/cert/ca.pem \
--embed-certs=true \
--server=${KUBE_APISERVER} \
--kubeconfig=dashboard.kubeconfig

# 使用之前创建的token设置客户端认证参数
kubectl config set-credentials dashboard_user \
--token=${DASHBOARD_LOGIN_TOKEN} \
--kubeconfig=dashboard.kubeconfig

# 设置上下文参数
kubectl config set-context default \
--cluster=kubernetes \
--user=dashboard_user \
--kubeconfig=dashboard.kubeconfig

# 设置默认上下文
kubectl config use-context default --kubeconfig=dashboard.kubeconfig

将dashboard.kubeconfig文件下载到本地:

sz dashboard.kubeconfig

使用下载的dashboard.kubeconfig文件访问DashBoard:

https://10.1.104.201:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy

文档更新时间: 2020-10-22 15:55   作者:闻骏