在Kubernetes Dashboard 中可以查看集群中应用的运行状态,也能够创建和修改各种 Kubernetes 资源,比如 Deployment、Job、DaemonSet 等。用户可以 Scale Up/Down Deployment、执行 Rolling Update、重启某个 Pod 或者通过向导部署新的应用。Dashboard 能显示集群中各种资源的状态以及日志信息。
可以说,Kubernetes Dashboard 提供了 kubectl 的绝大部分功能,大家可以根据情况进行选择。
但对于我们来说,我们可以通过配置dashboard了解一些K8S基本命令,熟悉K8S基本操作。所以这一节的重点便是通过配置dashboard熟悉某些K8S命令。(以下操作均在k8s-master中执行)
1.1、下载yaml文件到本地
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
ps:dashboard版本有很多,您可以在github搜索dashboard自己选择适合自己的版本,在此我选择的是V1.10.1
1.2、修改yaml文件
由于国内无法从谷歌仓库k8s.gcr.io下载镜像,这里需要使用其他镜像仓库拉取。我们只需在kubernetes-dashboard.yaml中修改镜像地址:
vim kubernetes-dashboard.yaml
1、将k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1 修改为 mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1
2、修改Dashboard Service 为NodePort类型:
拖到文件最底部,添加type: NodePort nodePort: 30001 在添加时请注意空格。如下:
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 30001
selector:
k8s-app: kubernetes-dashboard
1.3、部署
执行以下命令:
kubectl create -f kubernetes-dashboard.yaml
(此命令是加载部署该yaml文件 其中的create参数也可以替换为apply)
部署完成后输入 :
kubectl get pods --all-namespaces
此命令查看节点是否正常运行,如果是RUNNING则代表部署成功
输入:
kubectl get svc --all-namespaces
此命令可查看dashboard外部端口,其中30001就是我们dashboard绑定的端口。
若出现了其他状况,则可以输入delete命令重新部署:
kubectl delete -f kubernetes-dashboard.yaml
1.4、添加ssl证书(可略,但不添加证书只能通过火狐等浏览器访问,谷歌不行)
以下命令请一行一行复制执行
mkdir key && cd key
openssl genrsa -out dashboard.key 2048
openssl req -new -out dashboard.csr -key dashboard.key -subj '/CN=192.168.238.10'
openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
kubectl delete secret kubernetes-dashboard-certs -n kube-system
kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kube-system #新的证书
kubectl delete pod kubernetes-dashboard-746dfd476-b2r5f -n kube-system #重启服务
其中192.168.238.10为master节点IP ,您需要替换成您自己的masterIP,当然由于dashboard一般是装在node节点上,所以您也可以将IP换为装有dashboard仪表盘的node节点上。
查看dashboard被k8s分配到了哪一台机器上:
kubectl get pods --all-namespaces -o wide
1.5、访问
1.请在浏览器中输入https://192.168.238.10
ps(在输入网址时需要手动添加https://,不然会报错,其中192.168.238.10为masterIP,可替换成装有dashboard的nodeIP)
2.若出现安全限制则点击高级---接受风险继续
3.若出现仪表板如下图片则代表成功:
若不创建管理员即使在用令牌进入的情况下,依然会有警告提醒错误,所以为了眼角舒服,我们首先创建管理员进行认证。
1. vim k8s-admin.yaml 写入
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
k8s-app: kubernetes-dashboard
name: admin
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin
namespace: kube-system
2. 输入:
kubectl create -f k8s-admin.yaml
3.查看mountable secrets
输入:
kubectl describe serviceaccount admin -n kube-system
保存mountable secrets对应的字符串
4.利用mountable secrets查看token
输入:
kubectl describe secret
例如:
kubectl describe secret admin-token-pm94h -n kube-system
其中admin-token-pm94h为
执行上述命令后,将返回token的值,我们可以将此token点击web上的令牌登录仪表板,如图:
5..登录仪表板
复制此token点击web上的令牌登录仪表板,如图则代表部署成功:
kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。运行kubectl命令的语法如下所示:
kubectl [command] [TYPE] [NAME] [flags]
comand:指定要对资源执行的操作,例如create、get、describe和delete
TYPE:指定资源类型,资源类型是大小学敏感的,开发者能够以单数、复数和缩略的形式。例如:
$ kubectl get pod pod1 -n kube-system
$ kubectl get pods pod1 -n kube-system
$ kubectl get po pod1 -n kube-system
NAME:指定资源的名称,名称也大小写敏感的。如果省略名称,则会显示所有的资源,例如:
$ kubectl get pods --all -namespaces
flags:指定可选的参cccc数。例如,可以使用-s或者–server参数指定Kubernetes API server的地址和端口。
另外,可以通过kubectl help命令获取更多的信息。
ps:我们可以看见kubectl在执行命令时,[command] [TYPE] [NAME] [flags]都是必填参数,
如果获取所有则需加上参数,比如: kubectl get [TYPE] --all -namespaces
若单独获取则也需加上参数,比如::kubectl get [TYPE] [name ] -n kube-system
1.查看pods
kubectl get pods --all-namespaces
2.查看svc
kubectl get svc --all-namespaces
3.创建/删除
kubectl delete/create pod -f xxx.yaml
4.查看dashboard被k8s分配到了哪一台机器上
kubectl get pods --all-namespaces -o wide
5.查看管理员密钥
kubectl describe serviceaccount admin -n kube-system
6.查看管理员token
kubectl describe secret admin-token-pm94h -n kube-system
7.查看集群状态
kubectl cluster-info
8.查看组件状态
kubectl get cs
~~~~未完待续
到此为止dashboard配置完成,我们通过配置熟悉了K8S的一些基本操作命令,也搭建好了今后会经常使用的仪表板。下一节,我们将学习通过yaml创建pod对象,并启动nginx服务感兴趣的朋友,可以继续更进,在此小编祝大家生活愉快。有技术交流的朋友请加微信:laughing_jk。
~~您身边喜欢绿色的朋友
帅吉帅哥(Spring)