K8S从入门到放弃系列-(14)Kubernetes集群Dashboard部署
1、下载yaml配置文件
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
2、创建dashboard专有secret
浏览器访问时,默认文件中secret文件有问题,我们需要自定义一个证书进行认证
a) 创建证书请求文件
[root@k8s-master01 ~]# vim /opt/k8s/certs/dashboard-csr.json
{
"CN": "k8s-dashboard",
"key": {
"algo": "rsa",
"size":
},
"names": [
{
"C": "CN",
"ST": "ShangHai",
"L": "ShangHai",
"O": "k8s-dashboard",
"OU": "System"
}
]
}
b) 生成证书
[root@k8s-master01 certs]# cfssl gencert -ca=/etc/kubernetes/ssl/ca.pem \
-ca-key=/etc/kubernetes/ssl/ca-key.pem \
-config=/opt/k8s/certs/ca-config.json \
-profile=kubernetes dashboard-csr.json | cfssljson -bare k8s-dashboard
// :: [INFO] generate received request
// :: [INFO] received CSR
// :: [INFO] generating key: rsa-
// :: [INFO] encoded CSR
// :: [INFO] signed certificate with serial number
// :: [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., from the CA/Browser Forum (https://cabforum.org);
specifically, section 10.2. ("Information Requirements").
c)创建secret
[root@k8s-master01 certs]# kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key=./k8s-dashboard-key.pem --from-file=dashboard.crt=./k8s-dashboard.pem -n kube-system
3、修改yaml文件
默认下载的资源清单文件,镜像地址不可用,以及secret也需要注释
[root@k8s-master01 ~]# vim /opt/dashboard/kubernetes-dashboard.yaml
## 修改三处
### 注释默认secret配置
# ------------------- Dashboard Secret ------------------- # #apiVersion: v1
#kind: Secret
#metadata:
# labels:
# k8s-app: kubernetes-dashboard
# name: kubernetes-dashboard-certs
# namespace: kube-system
#type: Opaque
### k8s.gcr.io 修改为 registry.cn-hangzhou.aliyuncs.com/google_containers
...
image: registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1
... #---
### 为service添加NotePort模式
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
type: NodePort
ports:
- port:
targetPort:
selector:
k8s-app: kubernetes-dashboard
4、跟据资源清单文件,创建
[root@k8s-master01 dashboard]# kubectl apply -f kubernetes-dashboard.yaml
### 查看pod,可以看到kubernetes-dashboard-5d9599dc98-qbpkb已经running
[root@k8s-master01 ~]# kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-75569d87d7-tpjq5 / Running 7d3h
calico-node-bmpbd / Running 7d3h
calico-node-dms6w / Running 7d3h
calico-node-f2xcp 1/1 Running 3 7d
calico-node-mxc5h 1/1 Running 3 7d
calico-node-zzbqn 1/1 Running 3 7d
coredns-55f46dd959-9v98d / Running 7d3h
coredns-55f46dd959-krcsq / Running 7d3h
kubernetes-dashboard-5d9599dc98-qbpkb 1/1 Running 0 77s
tiller-deploy-6d54f974dc-fmgk5 / Running 7d3h
### 查看svc,对外端口:
[root@k8s-master01 ~]# kubectl get svc -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.254.0.2 <none> /UDP,/TCP,/TCP 7d3h
kubernetes-dashboard NodePort 10.254.188.109 <none> 443:30721/TCP 5m54s
tiller-deploy ClusterIP 10.254.20.131 <none> /TCP 7d3h
5、创建集群管理员账号
dashboard部署好后,我们需要创建对应账号才可以登陆
a)创建用于登录dashborad的serviceaccount账号
[root@k8s-master01 ~]# kubectl create serviceaccount dashboard-admin -n kube-system
b)创建一个clusterrolebingding,将名称为cluster-admin的clusterrole绑定到我们刚刚创建的serviceaccount上,名称空间和sa使用:作为间隔
[root@k8s-master01 ~]# kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
c)查看secret
clusterrolebingding创建完成后系统会自动创建一个secret,名称以serviceaccount名称开头
[root@k8s-master01 ~]# kubectl get secret -n kube-system|grep dashboard-admin
dashboard-admin-token-8rkds kubernetes.io/service-account-token 111s
d)获取tocken
[root@k8s-master01 ~]# kubectl describe secret dashboard-admin-token-8rkds -n kube-system
Name: dashboard-admin-token-8rkds
Namespace: kube-system
Labels: <none>
Annotations: kubernetes.io/service-account.name: dashboard-admin
kubernetes.io/service-account.uid: 797f6a81-70a6-11e9-be01-000c29d932a4 Type: kubernetes.io/service-account-token Data
====
ca.crt: bytes
namespace: bytes
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tOHJrZHMiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNzk3ZjZhODEtNzBhNi0xMWU5LWJlMDEtMDAwYzI5ZDkzMmE0Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.qoVBiN0SPcvTTOXNwCo7moLVeR8FlQ2fJpAts_eAeFacqj_E8CzmgSgk15QLl5JDuSIvKMrZYgvq4Ei9AlmvJr80z_4HfMD2rwCMq3BoaIzlG-Pq44mnnPWO36p2885roPf11bW--VKzlugFpXCYRCSKwpPORb4kH-FiqvE65v3AA_9fo4WtgG1HO5w94cBmE_DqWcrtuNaKcwDpEXkJJtcmDVqQ978Jpuaw-YkS0aMOLbkVJ-tRjgQxYINtBhT29TxT0aS-4kOm9hXbSFAy84ss8pOEIPNmFmWxqwxNHyFT6gXiDaI-4KydSSb88JXi18PJfVJyV0GM3Pm8JkbwLw
6、登陆dashboard
需要使用https协议,可以看到有两种登陆方式,这里我们采用令牌的方式,就是上一步获取到的tocken

至此,Dashboard已经部署完毕,并创建集群管理员账号可以登陆,可以对集群进行管理。
K8S从入门到放弃系列-(14)Kubernetes集群Dashboard部署的更多相关文章
- K8S从入门到放弃系列-(15)Kubernetes集群Ingress部署
Ingress是kubernetes集群对外提供服务的一种方式.ingress部署相对比较简单,官方把相关资源配置文件,都已经集合到一个yml文件中(mandatory.yaml),镜像地址也修改为q ...
- K8S从入门到放弃系列-(13)Kubernetes集群mertics-server部署
集群部署好后,如果我们想知道集群中每个节点及节点上的pod资源使用情况,命令行下可以直接使用kubectl top node/pod来查看资源使用情况,默认此命令不能正常使用,需要我们部署对应api资 ...
- K8S从入门到放弃系列-(12)Kubernetes集群Coredns部署
摘要: 集群其他组件全部完成后我们应当部署集群 DNS 使 service 等能够正常解析,1.11版本coredns已经取代kube-dns成为集群默认dns. 1)下载yaml配置清单 [root ...
- K8S从入门到放弃系列-(16)Kubernetes集群Prometheus-operator监控部署
Prometheus Operator不同于Prometheus,Prometheus Operator是 CoreOS 开源的一套用于管理在 Kubernetes 集群上的 Prometheus 控 ...
- K8S从入门到放弃系列-(11)kubernetes集群网络Calico部署
摘要: 前面几个篇幅,已经介绍master与node节点集群组件部署,由于K8S本身不支持网络,当 node 全部启动后,由于网络组件(CNI)未安装会显示为 NotReady 状态,需要借助第三方网 ...
- K8S从入门到放弃系列-(9)kubernetes集群之kubelet部署
摘要: Kubelet组件运行在Node节点上,维持运行中的Pods以及提供kuberntes运行时环境,主要完成以下使命: 1.监视分配给该Node节点的pods 2.挂载pod所需要的volume ...
- K8S从入门到放弃系列-(4)kubernetes集群之kubectl命令行工具部署
摘要:随着版本的不断迭代,k8s为了集群安全,集群中趋向采用TLS+RBAC的安全配置方式,所以我们在部署过程中,所有组件都需要证书,并启用RBAC认证. 我们这里采用二进制安装,下载解压后,把对应组 ...
- K8S从入门到放弃系列-(10)kubernetes集群之kube-proxy部署
摘要: kube-proxy的作用主要是负责service的实现,具体来说,就是实现了内部从pod到service和外部的从node port向service的访问 新版本目前 kube-proxy ...
- K8S从入门到放弃系列-(7)kubernetes集群之kube-scheduler部署
摘要: 1.Kube-scheduler作为组件运行在master节点,主要任务是把从kube-apiserver中获取的未被调度的pod通过一系列调度算法找到最适合的node,最终通过向kube-a ...
随机推荐
- linux系列(二十一):chmod命令
1.命令格式 chmod [-cfvR] [--help] [--version] mode file 2.命令功能 用于改变文件或目录的访问权限,用它控制文件或目录的访问权限. 3.命令参数 必要参 ...
- Linux中查看某个端口占用情况
譬如在linux中排查某个端口是否被占用,可以通过如下命令进行排查,排查方法如下: 1: 排查 : 应用是否被人debug. 8787 为端口号 netstat -anp |grep 8787 图中 ...
- hive tez调优(3)
根据.方案最右侧一栏是一个8G VM的分配方案,方案预留1-2G的内存给操作系统,分配4G给Yarn/MapReduce,当然也包括了HIVE,剩余的2-3G是在需要使用HBase时预留给HBase的 ...
- springMVC_配置文件搭建基础环境
SpringMVC与Struts的区别. 一.基础jar包 二.①DispatcherServlet,handelMapping,webAction(colltroller),ModelAndView ...
- 使用WebSocket实现服务端和客户端的通信
开发中经常会有这样的使用场景.如某个用户在一个数据上做了xx操作, 与该数据相关的用户在线上的话,需要实时接收到一条信息. 这种可以使用WebSocket来实现. 另外,对于消息,可以定义一个类进行固 ...
- The First Python man in Github
Python date VS(可视化了一下前几名) 查了下Github上星星最多的Python man 或许这就是目标吧 刚刚改了github.
- PhpStorm 增加Swoole智能提示
下载https://github.com/eaglewu/swoole-ide-helper的源码 git clone https://github.com/eaglewu/swoole-ide-he ...
- AndroidStudio导入开源项目提示报错:Gradle sync failed: SSL peer shut down incorrectly
问题描述: AndroidStudio导入开源项目提示报错:Gradle sync failed: SSL peer shut down incorrectly (1 m 12 s 92 ms) 解决 ...
- linux内核中IS_ALIGNED是如何定义的?
1. 定义如下: (include/linux/kernel.h) #define IS_ALIGNED(x, a) (((x) & ((typeof(x))(a ...
- 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_04-用户认证技术方案-SpringSecurityOauth2
2.3 Spring security Oauth2认证解决方案 本项目采用 Spring security + Oauth2完成用户认证及用户授权,Spring security 是一个强大的和高度 ...