证书问题,node无法部署

这种问题一般出现在k8s集群中存在node的情况下,主要原因是dashboad安装yaml文件中镜像启动参数args中apiserver默认是注释掉的,dashboard这种情况下会选择https://10.96.0.1:443作为默认的apiserver接口地址。但是证书是绑定在域名上面的,所以这种情况就会报错。

Error while initializing connection to Kubernetes apiserver. This most likely means that the cluster is misconfigured (e.g., it has invalid apiserver certificates or service account's configuration) or the --apiserver-host param points to a server that does not exist. Reason: Get https://10.96.0.1:443/version: x509: cannot validate certificate for 10.96.0.1 because it doesn't contain any IP SANs
2020-01-18T08:51:12.263350583Z Refer to our FAQ and wiki pages for more information: https://github.com/kubernetes/dashboard/wiki/FAQ

解决方案如下:

  1. 指定apiserver为可访问的 - --apiserver-host=http://my-address:port
  2. kubectl drain node(node为所有子节点),这样dashboard默认就会部署在master节点上。

打开dashboard页面问题

我的k8s系统是部署在自己搭建的虚拟机上,所以要访问dashboard页面,需要将相关的svc改成nodeport
当然也有其他的访问方式,自己选择:
通过 API server 访问 dashboard(https 6443端口和http 8080端口方式)
通过 kubectl proxy 访问 dashboard

权限问题

当你打开dashboard页面之后,也通过网上教程获取到了token,这里附加一些获取token的方式kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep dashboard | awk '{print $1}')
就说将dashboard相关的token获取出来,然后describe就会获取到对应的token,用于打开页面后输入token。

User "system:serviceaccount:kube-system:default" cannot list jobs.batch in the namespace "default". (get jobs.batch)

当你发现这种错误的时候,就是权限问题了,出现的问题主要是官网默认给的权限是最小的。

apiVersion: v1
kind: ServiceAccount
metadata:
  name: dashboard
  namespace: kube-system
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: dashboard
subjects:
  - kind: ServiceAccount
    name: dashboard
    namespace: kube-system
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io

主要是修改roleRef区段中的role为管理员角色,这样子就不会出现问题了。
k8s-dashboard.png