参考文档

https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/#deploying-the-dashboard-ui
https://github.com/kubernetes/kubernetes/tree/7f23a743e8c23ac6489340bbb34fa6f1d392db9d/cluster/addons/dashboard
https://github.com/kubernetes/dashboard
https://blog.csdn.net/nklinsirui/article/details/80581286
https://github.com/kubernetes/dashboard/issues/3472

文档目录

  • kubernetes1.13.1+etcd3.3.10+flanneld0.10集群部署
  • kubernetes1.13.1部署kuberneted-dashboard v1.10.1
  • kubernetes1.13.1部署coredns
  • kubernetes1.13.1部署ingress-nginx并配置https转发dashboard
  • kubernetes1.13.1部署metrics-server0.3.1
  • kubernetes1.13.1集群使用ceph rbd存储块
  • kubernetes1.13.1集群结合ceph rbd部署最新版本jenkins
  • kubernetes1.13.1集群安装包管理工具helm
  • kubernetes1.13.1集群集成harbor-helm

一、填坑

按照官网文档一条命令即可,但是国内显然不是这样,首先要填许多坑才行

坑一:Docker镜像

1、注册阿里云账户构建自己的镜像

可以关联github构建,这样就可以把国外镜像生成为阿里云镜像
https://github.com/minminmsn/k8s1.13/tree/master/kubernetes-dashboard-amd64/Dockerfile

2、下载docker镜像

docker pull registry.cn-beijing.aliyuncs.com/minminmsn/kubernetes-dashboard:v1.10.1

坑二:SSL证书

证书不对或者用auto创建的证书会报错,报错见https://github.com/kubernetes/dashboard/issues/3472

1、如果购买有的证书的话,把证书文件放在certs/目录下创建secret即可
[root@elasticsearch01 /]# ls certs/
minminmsn.crt  minminmsn.csr  minminmsn.key[root@elasticsearch01 /]# kubectl create secret generic kubernetes-dashboard-certs --from-file=certs -n kube-system
secret/kubernetes-dashboard-certs created
2、如果没有购买的话需要自定义生成证书,步骤如下
[root@elasticsearch01 /]# mkdir /certs
[root@elasticsearch01 /]# openssl req -nodes -newkey rsa:2048 -keyout certs/dashboard.key -out certs/dashboard.csr -subj "/C=/ST=/L=/O=/OU=/CN=kubernetes-dashboard"
Generating a 2048 bit RSA private key
................+++
..............................................+++
writing new private key to 'certs/dashboard.key'
-----
No value provided for Subject Attribute C, skipped
No value provided for Subject Attribute ST, skipped
No value provided for Subject Attribute L, skipped
No value provided for Subject Attribute O, skipped
No value provided for Subject Attribute OU, skipped
[root@elasticsearch01 /]# ls /certs
dashboard.csr  dashboard.key[root@elasticsearch01 /]# openssl x509 -req -sha256 -days 365 -in certs/dashboard.csr -signkey certs/dashboard.key -out certs/dashboard.crt
Signature ok
subject=/CN=kubernetes-dashboard
Getting Private key
[root@elasticsearch01 /]# ls certs/
dashboard.crt  dashboard.csr  dashboard.key[root@elasticsearch01 /]# kubectl create secret generic kubernetes-dashboard-certs --from-file=certs -n kube-system
secret/kubernetes-dashboard-certs created

坑三:修改service配置,将type: ClusterIP改成NodePort,便于通过Node端口访问

[root@elasticsearch01 /]# wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended/kubernetes-dashboard.yaml
[root@elasticsearch01 /]# vim /k8s/yaml/kubernetes-dashboard.yaml
kind: Service
apiVersion: v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kube-system
spec:type: NodePortports:- port: 443targetPort: 8443selector:k8s-app: kubernetes-dashboard

二、部署Kubernetes-dashboard

修改镜像地址为registry.cn-beijing.aliyuncs.com/minminmsn/kubernetes-dashboard:v1.10.1即可部署

[root@elasticsearch01 /]# vim /k8s/yaml/kubernetes-dashboard.yaml spec:containers:- name: kubernetes-dashboardimage: registry.cn-beijing.aliyuncs.com/minminmsn/kubernetes-dashboard:v1.10.1[root@elasticsearch01 /]# kubectl create -f /k8s/yaml/kubernetes-dashboard.yaml
serviceaccount/kubernetes-dashboard created
role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
deployment.apps/kubernetes-dashboard created
service/kubernetes-dashboard created
Error from server (AlreadyExists): error when creating "/k8s/yaml/kubernetes-dashboard.yaml": secrets "kubernetes-dashboard-certs" already exists[root@elasticsearch01 /]# kubectl get pods -n kube-system
NAME                                   READY   STATUS    RESTARTS   AGE
kubernetes-dashboard-cb55bd5bd-4jsh7   1/1     Running   0          21s
[root@elasticsearch01 /]# kubectl get svc -n kube-system
NAME                   TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
kubernetes-dashboard   NodePort   10.254.140.115   <none>        443:41579/TCP   31s
[root@elasticsearch01 /]# kubectl get pods -n kube-system -o wide
NAME                                   READY   STATUS    RESTARTS   AGE   IP            NODE        NOMINATED NODE   READINESS GATES
kubernetes-dashboard-cb55bd5bd-4jsh7   1/1     Running   0          40s   10.254.73.2   10.2.8.34   <none>           <none>

三、访问dashboard

1、注意有证书需要域名访问,如果有DNS可以配置域名解析,没有Host绑定即可
2、选择token访问,token获取方法如下
[root@elasticsearch01 ~]# cat /k8s/yaml/admin-token.yaml
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:name: adminannotations:rbac.authorization.kubernetes.io/autoupdate: "true"
roleRef:kind: ClusterRolename: cluster-adminapiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccountname: adminnamespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:name: adminnamespace: kube-systemlabels:kubernetes.io/cluster-service: "true"addonmanager.kubernetes.io/mode: Reconcile
[root@elasticsearch01 yaml]# kubectl create -f admin-token.yaml
clusterrolebinding.rbac.authorization.k8s.io/admin created
serviceaccount/admin created[root@elasticsearch01 yaml]#  kubectl describe secret/$(kubectl get secret -nkube-system |grep admin|awk '{print $1}') -nkube-system
Name:         admin-token-5j2vf
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: adminkubernetes.io/service-account.uid: 6b0b0c00-0b45-11e9-85fe-52540089b2b6Type:  kubernetes.io/service-account-tokenData
====
ca.crt:     1359 bytes
namespace:  11 bytes
token:      获取的tocken值

3、效果如下
https://k8s.minminmsn.com
输入token访问
上面获取的tocken值

补充

Apiserver hosts绑定ip错误10.0.0.1应该是10.254.0.1,默认pods网端是10.254.0.0/16,其中10.254.0.1会用来kubenetes的clusterip
[root@elasticsearch01 ~]# kubectl get svc --all-namespaces=true
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes ClusterIP 10.254.0.1 <none> 443/TCP 6d1h

解决方法
×××文件重启apiserver服务即可(配置前多检查,否则后面会增加很多排错过程)

[root@elasticsearch01 yaml]# kubectl logs kubernetes-dashboard-865b64d96f-g5f9t --namespace=kube-system
2018/12/29 07:49:44 Starting overwatch
2018/12/29 07:49:44 Using in-cluster config to connect to apiserver
2018/12/29 07:49:44 Using service account token for csrf signing
2018/12/29 07:49:44 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.254.0.1:443/version: x509: certificate is valid for 10.0.0.1, 127.0.0.1, 10.2.8.44, 10.2.8.65, 10.2.8.34, not 10.254.0.1
Refer to our FAQ and wiki pages for more information: https://github.com/kubernetes/dashboard/wiki/FAQ

修改Hosts里10.0.0.1为10.254.0.1

[root@elasticsearch01 ssl]# cat server-csr.json
{"CN": "kubernetes","hosts": ["10.254.0.1","127.0.0.1","10.2.8.44","10.2.8.65","10.2.8.34","kubernetes","kubernetes.default","kubernetes.default.svc","kubernetes.default.svc.cluster","kubernetes.default.svc.cluster.local"],"key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","L": "Beijing","ST": "Beijing","O": "k8s","OU": "System"}]
}

同步证书并重启服务

[root@elasticsearch01 ssl]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes server-csr.json | cfssljson -bare server
2018/12/29 15:57:02 [INFO] generate received request
2018/12/29 15:57:02 [INFO] received CSR
2018/12/29 15:57:02 [INFO] generating key: rsa-2048
2018/12/29 15:57:03 [INFO] encoded CSR
2018/12/29 15:57:03 [INFO] signed certificate with serial number 57756035754570455349189088480535470836534926573
2018/12/29 15:57:03 [WARNING] This certificate lacks a "hosts" field. This makes it unsuitable for
websites. For more information see the Baseline Requirements for the Issuance and Management
of Publicly-Trusted Certificates, v.1.1.6, from the CA/Browser Forum (https://cabforum.org);
specifically, section 10.2.3 ("Information Requirements").[root@elasticsearch01 ssl]# scp server-csr.json server.csr server-key.pem server.pem 10.2.8.65:$PWD
[root@elasticsearch01 ssl]# scp server-csr.json server.csr server-key.pem server.pem 10.2.8.34:$PWD
[root@elasticsearch01 ssl]# systemctl restart kube-apiserver
[root@elasticsearch01 ssl]# systemctl restart kube-scheduler
[root@elasticsearch01 ssl]# systemctl restart kube-controller-manager

转载于:https://blog.51cto.com/jerrymin/2337940

Kubernetes1.13.1部署Kuberneted-dashboard v1.10.1相关推荐

  1. Kubernetes1.13集群安装dashboard 1.10.1

    文章目录 Kubernetes1.13集群安装dashboard 1.10.1 安装dashboard 下载镜像 创建pod 授予Dashboard账户集群管理权限 APIServer方式 查看集群信 ...

  2. 安装kubernetes1.12.1的 dashboard v1.10 + Heapster

    2019独角兽企业重金招聘Python工程师标准>>> Dashboard是kubernetes的官方WEB UI. Heapster为集群添加使用统计和监控功能,为Dashboar ...

  3. 基于Kubeadm部署Kubernetes1.13.3 HA 高可用集群

    Table of Contents 目录 基于Kubeadm部署Kubernetes1.13.3 HA 高可用集群 01. 部署目的 1.1 Kubernetes的特性 1.2 贴微服务,开发环境快速 ...

  4. 基于kubeadm快速部署kubernetes K8S V1.17.4集群-无坑完整版

    基于kubeadm快速部署kubernetes K8S V1.17.4集群,并部署Dashboard Web页面,实现可视化查看Kubernetes资源 主机配置规划 服务器名称(hostname) ...

  5. 部署Kubernetes Dashboard 及监控组件 Heapster

    部署Dashboard 项目地址:https://github.com/kubernetes/dashboard 1.下载官方提供的 Dashboard 组件部署的 yaml 文件 wget http ...

  6. (四)部署k8s dashboard web端管理界面

    文章目录 1 token令牌认证登录 2 kubeconfig配置文件登录 参考github 1 获取dashboard image镜像 [root@master1 manifests]# docke ...

  7. k8s v1.10部署笔记

    本文是根据最近一份github上很不错的部署教程所做的验证部署测试,不同之处在于原教程中是3节点,而这里共使用了4个节点.Github上的教程地址如下所示,推荐大家参照原作者文章进行自己的实验.在本文 ...

  8. kubernetes V1.10.4 集群部署 (手动生成证书)

    说明:本文档涉及docker镜像,yaml文件下载地址 链接:https://pan.baidu.com/s/1QuVelCG43_VbHiOs04R3-Q 密码:70q2 本文只是作为一个安装记录 ...

  9. Kubernetes v1.13 二进制部署集群

    Kubernetes v1.13 二进制部署集群(HTTPS+RBAC) 官方提供的几种Kubernetes部署方式 minikube Minikube是一个工具,可以在本地快速运行一个单点的Kube ...

最新文章

  1. 平面设计常用的图像文件格式
  2. SAP UI5 应用开发教程之二十五 - 使用代理服务器解决 SAP UI5 应用访问远端 OData 服务的跨域问题
  3. xampp mysql 备份_Linux Xampp计划任务自动备份Mysql数据库和所有网站
  4. couchbase_使用Couchbase分页
  5. linux无法访问443端口,linux – 为什么我无法在Ubuntu上ping端口443?
  6. http 412 precondition failed
  7. 培训协议与服务器有没有要求,上面说的是提供专业培训且规定了服务器和培训费以及违约金的问题。试用期辞职单位有没有权利追究违约金呢?- 法律快车法律咨询...
  8. java的访问修饰符
  9. JavaScript设计模式入坑 1
  10. [每日一氵] Python以管理员权限运行程序
  11. 企业局域网即时通讯软件存在是必然趋势
  12. JAVA计算机毕业设计智慧茶园综合管理系统Mybatis+源码+数据库+lw文档+系统+调试部署
  13. 关于汉字转拼音的Pinyin4j工具使用
  14. WCF服务通过TCP实时监控客户端状态,并可以向客户端广播推送消息,实现双向通信
  15. 容器集合——Collection(单列)、Map(双列)
  16. 声音传感器模块的改进
  17. 10组团队项目-Beta冲刺-4/5
  18. Android_通过两个点的经纬度计算距离
  19. 关于LaTeX中的正文的字体大小
  20. (可实现的CCA2 放松条件---funcCPA)论文学习笔记

热门文章

  1. linux下基于apache下的svn的搭建
  2. ApacheServerStatus开启
  3. 出租房的网络环境研究
  4. mass Framework event模块 v8
  5. 片滚动插件myScroll
  6. 中柏平板触摸驱动_工业平板电脑触摸屏种类及故障解决办法,赶紧收藏起来
  7. 伽卡他卡电子教室 百度百科_创建百度百科的好处
  8. SQL 判断表是否存在 数据表不存在是致命错误
  9. Maven自動化構建工具
  10. 如何使CPU占用率为50%