k8s dashboard 安裝和證書更新


1、k8s 搭建   參見https://blog.51cto.com/lizhenliang/2325770

[root@VM_0_48_centos ~]# kubectl  get cs
NAME                 STATUS    MESSAGE              ERROR
scheduler            Healthy   ok                   
controller-manager   Healthy   ok                   
etcd-1               Healthy   {"health": "true"}   
etcd-0               Healthy   {"health": "true"}   
etcd-2               Healthy   {"health": "true"}   

注意:博客中有個別修改的.

/opt/kubernetes/cfg/kube-apiserver  :

需要由:--enable-admission-plugins=NamespaceLifecycle,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota

改為:  --enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,NodeRestriction   去掉:SecurityContextDeny

 

2、dashboard  下載地址: /opt/dashboard/    注意: admin-token.yaml 為手工創建

git clone  https://github.com/kubernetes/kubernetes.git 

[root@VM_0_48_centos dashboard]# ll *.yaml
-rw-r--r-- 1 root root  515 Aug  8 10:11 admin-token.yaml
-rw-r--r-- 1 root root  264 Aug  5 16:27 dashboard-configmap.yaml
-rw-r--r-- 1 root root 1835 Aug  8 09:14 dashboard-controller.yaml
-rw-r--r-- 1 root root 1353 Aug  5 16:27 dashboard-rbac.yaml
-rw-r--r-- 1 root root  551 Aug  5 16:27 dashboard-secret.yaml
-rw-r--r-- 1 root root  339 Aug  7 15:24 dashboard-service.yaml

  

3、修改dashboard-service.yaml  內容   

[root@VM_0_48_centos dashboard]# cat dashboard-service.yaml 
apiVersion: v1
kind: Service
metadata:
  name: kubernetes-dashboard
  namespace: kube-system
  labels:
    k8s-app: kubernetes-dashboard
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
spec:
  type: NodePort   #添加Nodeport 以便訪問
  selector:
    k8s-app: kubernetes-dashboard
  ports:
  - port: 443
    targetPort: 8443

 

4、 啟動服務

kubectl  apply  -f dashboard-configmap.yaml 

 kubectl  apply  -f dashboard-secret.yaml 

kubectl  apply  -f dashboard-rbac.yaml 

kubectl apply -f dashboard-service.yaml 

kubectl  apply -f  dashboard-controller.yaml

 

5、修改/usr/lib/systemd/system/kubelet.service  參數:cluster-dns  cluster-domain 

 kubectl  describe pod kubernetes-dashboard-746dfd476-mdv5n  -n kube-system

b報錯:kubelet does not have ClusterDNS IP configured and cannot create PodJ解決方案

[root@VM_0_48_centos dashboard]# cat /usr/lib/systemd/system/kubelet.service
[Unit]
Description=Kubernetes Kubelet
After=docker.service
Requires=docker.service

[Service]
EnvironmentFile=/opt/kubernetes/cfg/kubelet
ExecStart=/opt/kubernetes/bin/kubelet $KUBELET_OPTS
Restart=on-failure
KillMode=process

[Install]
WantedBy=multi-user.target
[root@VM_0_48_centos dashboard]# cat /opt/kubernetes/cfg/kubelet
KUBELET_OPTS="--logtostderr=true \
--v=4 \
--hostname-override=172.19.0.48 \
--cluster-dns=10.0.0.2 \             ### 配置dns
--cluster-domain=cluster.local \   ###配置域名
--kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig \
--bootstrap-kubeconfig=/opt/kubernetes/cfg/bootstrap.kubeconfig \
--cert-dir=/opt/kubernetes/ssl \
--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0"

修改完以后,重啟服務發現正常

6、權限問題 發現官網yaml授權中只有默認的defalut ,需要重新綁定角色。
[root@VM_0_48_centos dashboard]# cat admin-token.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"

  官網給的yaml:

[root@VM_0_48_centos dashboard]# cat dashboard-rbac.yaml 
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
    addonmanager.kubernetes.io/mode: Reconcile
  name: kubernetes-dashboard-minimal
  namespace: kube-system   #只能看到systemo 空間
rules:
  # Allow Dashboard to get, update and delete Dashboard exclusive secrets.
- apiGroups: [""]
  resources: ["secrets"]
  resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs"]
  verbs: ["get", "update", "delete"]
  # Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map.
- apiGroups: [""]
  resources: ["configmaps"]
  resourceNames: ["kubernetes-dashboard-settings"]
  verbs: ["get", "update"]
  # Allow Dashboard to get metrics from heapster.
- 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: RoleBinding
metadata:
  name: kubernetes-dashboard-minimal
  namespace: kube-system
  labels:
    k8s-app: kubernetes-dashboard
    addonmanager.kubernetes.io/mode: Reconcile
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: kubernetes-dashboard-minimal
subjects:
- kind: ServiceAccount
  name: kubernetes-dashboard
  namespace: kube-system

  

更新以后獲取登錄token:

[root@VM_0_48_centos dashboard]# kubectl describe secret/$(kubectl get secret -nkube-system |grep admin|awk '{print $1}') -nkube-system  
Name:         admin-token-j8sjg
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: admin
              kubernetes.io/service-account.uid: d9e482cf-b981-11e9-9170-525400c318af

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1359 bytes
namespace:  11 bytes
token:      *****************************************************************##設計保密信息

 


7、更新https證書有效期,解決只能由火狐瀏覽器訪問,其他瀏覽器無法訪問問題。

產生證書:
mkdir key && cd key
openssl genrsa -out dashboard.key 2048 

openssl req -new -out dashboard.csr -key dashboard.key -subj '/CN=172.19.0.48'

openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt 

kubectl delete secret kubernetes-dashboard-certs -n kube-system

kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kube-system  #新的證書

kubectl delete pod kubernetes-dashboard-746dfd476-b2r5f -n kube-system    #重啟服務 

 

8、效果展示:



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM