美文网首页
打开dashboard可视化界面报错(提示证书有误)

打开dashboard可视化界面报错(提示证书有误)

作者: 六分 | 来源:发表于2019-11-29 10:22 被阅读0次

    根据上一步教程安装kubernetes-dashboard-amd64:v1.10.1 最后浏览器打开会提示签名错误。
    使用kubectl logs kubernetes-dashboard-5f7b999d65-8j5n8 --namespace=kube-system查看到错误日志

    image
    推测kubernetes-dashboard自带签名证书过期了(或者别的原因),下面进行自签证书
    • 切换到root用户
    sudo su -
    
    • 创建自签名证书
      下面步骤可能会因为/root/.rnd文件找不到报错,直接创建一个touch /root/.rnd
    mkdir -p /data/tls && cd /data/tls
    openssl genrsa -out ca.key 2048
    openssl req -new -x509 -key ca.key -out ca.crt -days 3650 -subj "/C=CN/ST=HB/L=WH/O=DM/OU=YPT/CN=CA"
    //生成私钥
    openssl genrsa -out dashboard.key 2048
    //申请签名请求
    
    • 申请签名请求
    # ip为dashaboard访问地址ip
    
    export ip=192.168.160.100
    
    openssl req -new -sha256 -key dashboard.key -out dashboard.csr -subj "/C=CN/ST=HB/L=WH/O=DM/OU=YPT/CN=$ip"
    
    cat >  dashboard.cnf  <<EOF
    extensions = san
    [san]
    keyUsage = digitalSignature
    extendedKeyUsage = clientAuth,serverAuth
    subjectKeyIdentifier = hash
    authorityKeyIdentifier = keyid,issuer
    subjectAltName = IP:$ip,IP:127.0.0.1,DNS:$ip,DNS:localhost
    EOF
    
    • 签发证书
    openssl x509 -req -sha256 -days 3650 -in dashboard.csr -out dashboard.crt -CA ca.crt -CAkey ca.key -CAcreateserial -extfile dashboard.cnf
    

    至此,dashboard证书签发完成,接着就要删除旧的kubernetes-dashboard用新的证书来创建

    • 删除旧kubernetes-dashboard
    // 方法一:(我用这个方法报错了,所以选了方法二)
    kubectl delete -f kubernetes-dashboard.yaml  
    // 方法二:(需要手动一条一条删除)
    kubectl delete deployment kubernetes-dashboard --namespace=kube-system 
    kubectl delete service kubernetes-dashboard  --namespace=kube-system 
    kubectl delete role kubernetes-dashboard-minimal --namespace=kube-system 
    kubectl delete rolebinding kubernetes-dashboard-minimal --namespace=kube-system
    kubectl delete sa kubernetes-dashboard --namespace=kube-system 
    kubectl delete secret kubernetes-dashboard-certs --namespace=kube-system
    kubectl delete secret kubernetes-dashboard-csrf --namespace=kube-system
    kubectl delete secret kubernetes-dashboard-key-holder --namespace=kube-system
    
    • 创建 secret kubernetes-dashboard-certs
    kubectl create secret generic kubernetes-dashboard-certs --from-file="/data/tls/dashboard.crt,/data/tls/dashboard.key" -n kube-system 
    
    • 修改kubernetes-dashboard.yaml 文件,注释掉Dashboard Secret 使用自己的签名
    # ------------------- Dashboard Secret ------------------- #
    #apiVersion: v1
    #kind: Secret
    #metadata:
    #  labels:
    #    k8s-app: kubernetes-dashboard
     # name: kubernetes-dashboard-certs
    #  namespace: kube-system
    #type: Opaque
    
    • 部署dashboard
    kubectl create -f kubernetes-dashboard.yaml
    kubectl get po -n kube-system
    
    • 至此,使用自建证书创建kubernetes-dashboard步骤已经完成。如果上一步有用k8s-admin-token.yaml文件创建过admin token的可以直接跳过这一步,直接获取token打开浏览器进行登录


      image
    • 没有创建admin token的需要进行入下操作
      创建k8s-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"
        addonmanager.kubernetes.io/mode: Reconcile
    

    配置admin token

    kubectl create -f k8s-admin-token.yaml
    

    动态获取登录token

    kubectl describe secret/$(kubectl get secret -nkube-system |grep admin|awk '{print $1}') -nkube-system
    

    在浏览器中打开打开地址: https://<你的ip>:32288使用token登录,注意如果是使用的云服务器,需要去服务器的安全组策略中放开32288端口

    相关文章

      网友评论

          本文标题:打开dashboard可视化界面报错(提示证书有误)

          本文链接:https://www.haomeiwen.com/subject/rxpwwctx.html