部署环境
IP地址 | 主机名 | 功能 |
---|---|---|
10.1.32.230 | k8s-deploy-test | 部署节点,不承担实际作用 |
10.1.32.231 | k8s-master-test01 | master节点 |
10.1.32.232 | k8s-master-test02 | master节点 |
10.1.32.233 | k8s-master-test03 | master节点 |
10.1.32.240 | k8s-nginx-test | 负载均衡节点,实际生产中应为HA架构 |
10.1.32.234 | k8s-node01-test01 | node节点 |
10.1.32.235 | k8s-node02-test02 | node节点 |
10.1.32.236 | k8s-node03-test03 | node节点 |
部署插件_DashBoard
DashBoard提供集群基本的资源展示功能,使用Token认证。
DashBoard支持多种方式部署
Kubernetes部署Dashboard(proxy方式)(k8s-master):
获取DashBoard资源清单:
cd /opt/k8s/work
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
部署DashBoard并确认启动:
kubectl apply -f recommended.yaml
kubectl get pod -n kubernetes-dashboard | grep dashboard
启动代理访问kube-apiserver的非安全端口:
kubectl proxy --accept-hosts="^10\.1\.32\.231$" --address='10.1.32.231' --port=8088
http://10.1.32.231:8088/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#!/login
- 为了集群安全,从1.7开始,dashboard只允许通过https访问。
- 如果使用kube proxy则必须监听localhost或127.0.0.1,对于NodePort没有这个限制,但是仅建议在开发环境中使用。
- 如果不满足这些条件的登录访问,在登录成功后浏览器不跳转,始终停在登录界面。
Kubernetes部署Dashboard(k8s-deploy):
创建客户端证书(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.32.240:8443/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login
- 客户端先验证服务端证书,通过后服务端会反向验证客户端证书,即向客户端发送一个接受的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.32.240:8443/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login
- 如果使用令牌登录,则使用之前创建的DASHBOARD_LOGIN_TOKEN变量。
文档更新时间: 2021-09-03 15:54 作者:闻骏