1、k8s 搭建   参见https://blog.51cto.com/lizhenliang/2325770

  1. [root@VM_0_48_centos ~]# kubectl get cs
  2. NAME STATUS MESSAGE ERROR
  3. scheduler Healthy ok
  4. controller-manager Healthy ok
  5. etcd-1 Healthy {"health": "true"}
  6. etcd-0 Healthy {"health": "true"}
  7. 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

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

  

3、修改dashboard-service.yaml  内容

  1. [root@VM_0_48_centos dashboard]# cat dashboard-service.yaml
  2. apiVersion: v1
  3. kind: Service
  4. metadata:
  5. name: kubernetes-dashboard
  6. namespace: kube-system
  7. labels:
  8. k8s-app: kubernetes-dashboard
  9. kubernetes.io/cluster-service: "true"
  10. addonmanager.kubernetes.io/mode: Reconcile
  11. spec:
  12. type: NodePort #添加Nodeport 以便访问
  13. selector:
  14. k8s-app: kubernetes-dashboard
  15. ports:
  16. - port: 443
  17. 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"

  1. 修改完以后,重启服务发现正常

    6、权限问题 发现官网yaml授权中只有默认的defalut ,需要重新绑定角色。
  1. [root@VM_0_48_centos dashboard]# cat admin-token.yaml
  2. kind: ClusterRoleBinding
  3. apiVersion: rbac.authorization.k8s.io/v1beta1
  4. metadata:
  5. name: admin
  6. annotations:
  7. rbac.authorization.kubernetes.io/autoupdate: "true"
  8. roleRef:
  9. kind: ClusterRole
  10. name: cluster-admin #词角色未系统搭建时候自动生成管理员角色
  11. apiGroup: rbac.authorization.k8s.io
  12. subjects:
  13. - kind: ServiceAccount
  14. name: admin
  15. namespace: kube-system
  16. ---
  17. apiVersion: v1
  18. kind: ServiceAccount
  19. metadata:
  20. name: admin
  21. namespace: kube-system
  22. labels:
  23. kubernetes.io/cluster-service: "true"

  官网给的yaml:

  1. [root@VM_0_48_centos dashboard]# cat dashboard-rbac.yaml
  2. kind: Role
  3. apiVersion: rbac.authorization.k8s.io/v1
  4. metadata:
  5. labels:
  6. k8s-app: kubernetes-dashboard
  7. addonmanager.kubernetes.io/mode: Reconcile
  8. name: kubernetes-dashboard-minimal
  9. namespace: kube-system #只能看到systemo 空间
  10. rules:
  11. # Allow Dashboard to get, update and delete Dashboard exclusive secrets.
  12. - apiGroups: [""]
  13. resources: ["secrets"]
  14. resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs"]
  15. verbs: ["get", "update", "delete"]
  16. # Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map.
  17. - apiGroups: [""]
  18. resources: ["configmaps"]
  19. resourceNames: ["kubernetes-dashboard-settings"]
  20. verbs: ["get", "update"]
  21. # Allow Dashboard to get metrics from heapster.
  22. - apiGroups: [""]
  23. resources: ["services"]
  24. resourceNames: ["heapster"]
  25. verbs: ["proxy"]
  26. - apiGroups: [""]
  27. resources: ["services/proxy"]
  28. resourceNames: ["heapster", "http:heapster:", "https:heapster:"]
  29. verbs: ["get"]
  30. ---
  31. apiVersion: rbac.authorization.k8s.io/v1
  32. kind: RoleBinding
  33. metadata:
  34. name: kubernetes-dashboard-minimal
  35. namespace: kube-system
  36. labels:
  37. k8s-app: kubernetes-dashboard
  38. addonmanager.kubernetes.io/mode: Reconcile
  39. roleRef:
  40. apiGroup: rbac.authorization.k8s.io
  41. kind: Role
  42. name: kubernetes-dashboard-minimal
  43. subjects:
  44. - kind: ServiceAccount
  45. name: kubernetes-dashboard
  46. namespace: kube-system

  

更新以后获取登录token:

  1. [root@VM_0_48_centos dashboard]# kubectl describe secret/$(kubectl get secret -nkube-system |grep admin|awk '{print $1}') -nkube-system
  2. Name: admin-token-j8sjg
  3. Namespace: kube-system
  4. Labels: <none>
  5. Annotations: kubernetes.io/service-account.name: admin
  6. kubernetes.io/service-account.uid: d9e482cf-b981-11e9-9170-525400c318af
  7.  
  8. Type: kubernetes.io/service-account-token
  9.  
  10. Data
  11. ====
  12. ca.crt: 1359 bytes
  13. namespace: 11 bytes
  14. token: *****************************************************************##设计保密信息

  1. 7、更新https证书有效期,解决只能由火狐浏览器访问,其他浏览器无法访问问题。

    产生证书:
  1. mkdir key && cd key
  2. openssl genrsa -out dashboard.key 2048
  3.  
  4. openssl req -new -out dashboard.csr -key dashboard.key -subj '/CN=172.19.0.48'
  5.  
  6. openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
  7.  
  8. kubectl delete secret kubernetes-dashboard-certs -n kube-system
  9.  
  10. kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kube-system #新的证书
  11.  
  12. kubectl delete pod kubernetes-dashboard-746dfd476-b2r5f -n kube-system #重启服务
  1. 8、效果展示:


k8s dashboard 安装和证书更新的更多相关文章

  1. K8s+dashboard安装部署【h】

    系统安装使用虚拟机安装两个centos系统,在/etc/hosts里增加两行192.168.140.128 kuber-master192.168.140.129 kuber-node1 关闭防火墙s ...

  2. k8s kubernetes 集群 证书更新操作

    转载自https://www.cnblogs.com/kuku0223/p/12978716.html 1. 各个证书过期时间 /etc/kubernetes/pki/apiserver.crt #1 ...

  3. kubeadm安装集群系列-4.证书更新

    证书更新 默认证书一年有效期 一旦证书过期,使用kubectl时会出现如下提示:`Unable to connect to the server: x509: certificate has expi ...

  4. k8s 证书更新操作

    kubernetes证书更新 版本:1.14.2,以下操作在3台master节点上操作 1.各个证书过期时间 /etc/kubernetes/pki/apiserver.crt #1年有效期 /etc ...

  5. Kubernetes入门(二)——Dashboard 安装

    Kubernetes集群搭建完成后,可以通过命令行方式可以了解集群资源的使用情况,但是这种方式比较笨拙且不直观,因此考虑给集群安装Dashboard,这样能更直观了解集群状态.本文Dashboard的 ...

  6. 【k8s】在AWS EKS部署并通过ALB访问k8s Dashboard保姆级教程

    本教程适用范围 在AWS上使用EKS服务部署k8s Dashboard,并通过ALB访问 EKS集群计算节点采用托管EC2,并使用启动模板. 使用AWS海外账号,us-west-2区域 使用账号默认v ...

  7. Ubuntu下搭建Kubernetes集群(4)--部署K8S Dashboard

    K8S Dashboard是官方的一个基于WEB的用户界面,专门用来管理K8S集群,并可展示集群的状态.K8S集群安装好后默认没有包含Dashboard,我们需要额外创建它. 首先我们执行命令: wg ...

  8. 国内不fq安装K8S四: 安装过程中遇到的问题和解决方法

    目录 4 安装过程中遇到的问题和解决方法 4.1 常见问题 4.2 常用的操作命令 4.3 比较好的博客 国内不fq安装K8S一: 安装docker 国内不fq安装K8S二: 安装kubernet 国 ...

  9. k8s自签TLS证书

    自签TLS证书 TLS证书用于进行通信使用,k8s组件需要的证书有: 第一步:安装证书生成工具cfssl 在这之前需要先建立一个目录来存放安装的工具mkdir ssl,后面将安装的工具移动到各自的目录 ...

随机推荐

  1. 学Go语言能找到实习吗,年前聊聊Go和Java

    前言 快过年了,来公司的人越来越少,估计明天都没什么人了,白泽也要收拾收拾回老家过年了.今天就随便写写零碎的事,所以行文当中难免思路跳跃,请大家一笑了之. 每次冷不丁收到公司给发的礼品袋,心头总是莫名 ...

  2. hadoop面试

    hadoop.apache.orgspark.apache.orgflink.apache.orghadoop :HDFS/YARN/MAPREDUCE HDFS读写流程 NameNode DataN ...

  3. JavaCV的摄像头实战之六:保存为mp4文件(有声音)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  4. Tomcat下 session 持久化问题(重启服务器session 仍然存在)

    感谢大佬:https://www.iteye.com/blog/xiaolongfeixiang-560800 关于在线人数统计,大都使用SessionListener监听器实现. SessionLi ...

  5. 远程连接MySQL报错1045解决方案

    MySQL远端操作步骤: 方法一: USE mysql: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH ...

  6. ubuntu 终端乱码

    转载请注明来源:https://www.cnblogs.com/hookjc/ 解决方法: 一. Ubuntu默认的中文字符编码 Ubuntu默认的中文字符编码为zh_CN.UTF-8, 这个可以在 ...

  7. JSP两种声明变量的区别

    感谢大佬:https://blog.csdn.net/tiercel2008/article/details/11553899?utm_source=distribute.pc_relevant.no ...

  8. kebernet--新手填坑

    1.安装好kubernet之后,新建rc后,里面的容器一直ImagePullBackOff ,镜像无法拉取: ----需要配置docker镜像为国内镜像,记得在各个Node上都要配置!!! vim / ...

  9. Pandas中Series与Dataframe的区别

    1. Series Series通俗来讲就是一维数组,索引(index)为每个元素的下标,值(value)为下标对应的值 例如: arr = ['Tom', 'Nancy', 'Jack', 'Ton ...

  10. 有序取出Map集合的元素

    最近写到一个程序,返回了map,但是经过查阅资料,map是没有顺序的,各种查阅资料无果,最后自己写了这个方法.. 1,通过map集合的keySet()方法,获取到一个包含map所有key的Set集合 ...