10、为k8s集群配置dashboard服务
$ cd /etc/kubernetes/ && wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
#将名称空间修改为默认system
$ sed -i '/namespace/ s/kubernetes-dashboard/kube-system/g' recommended.yaml
$vi kubernetes-dashboard.yaml
#修改service类型为NodePort类型
.......
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: 31260 #添加一行
selector:
k8s-app: kubernetes-dashboard
......
对于有些kubernetes-dashboard中使用官方镜像无法拉取的情况,可以更改为国内源。
比如:image: k8s.gcr.io/google_containers/kubernetes-dashboard-amd64:v1.10.1
可以将镜像仓库地址k8s.gcr.io改成registry.aliyuncs.com/google_containers
即:
image: registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1
11、访问集群
11.1 通过令牌方式访问
mkdir key && cd key
#生成证书
openssl genrsa -out dashboard.key 2048
openssl req -new -out dashboard.csr -key dashboard.key -subj '/CN=172.17.3.141'
openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
#删除原有的证书secret
kubectl delete secret kubernetes-dashboard-certs -n kube-system
#创建新的证书secret
kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kube-system
#查看pod
kubectl get pod -n kube-system
#删除pod,启动新pod生效
kubectl delete pod kubernetes-dashboard-5b9dd4f974-ztp89 -n kube-system
#编辑文件vim k8s-admin.yaml
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: admin
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
name: admin
namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin
namespace: kube-system
labels:
kubernetes.io/cluster-service: "true"
addonmanager.kubernetes.io/mode: Reconcile
kubectl create -f k8s-admin.yaml
kubectl get serviceaccount -n kube-system
kubectl describe serviceaccount admin -n kube-system
kubectl describe secret admin-token-2frfz -n kube-system
#保存最后一步命令查看到的token密钥,就是登录dashboard需要的令牌,完成登陆
11.2 通过kubeconfig 方式访问
DASH_TOCKEN=$(kubectl get secret -n kube-system admin-token-mcqj5 -o jsonpath={.data.token}|base64 -d)
kubectl config set-cluster kubernetes --server=10.0.0.11:6443 --kubeconfig=/root/dashbord-admin.conf
kubectl config set-credentials admin --token=$DASH_TOCKEN --kubeconfig=/root/dashbord-admin.conf
kubectl config set-context admin --cluster=kubernetes --user=admin --kubeconfig=/root/dashbord-admin.conf
kubectl config use-context admin --kubeconfig=/root/dashbord-admin.conf