文章目录
Dashboard介绍
- Kubernetes开发了一个基于WEb的Dashboard,用户可以用Kubernetes Dashboard部署容器化的应用、监控应用的状态、执行故障排查任务以及管理Kubernetes的各种资源。
- 在Kubernetes Dashboard中可以查看群集中应用的运行状态,也能够创建和修改各种Kubernetes资源,比如Deployment、Job、DaemonSet等。用户可以Scale Up/Down Deployment、执行Rolling Update、重启某个pod或者通过向导部署新的应用。Dashboard能显示群集中各种资源的状态及日志信息。
- Kubernetes Dashboard提供了kubectl的绝大部分功能。
实验步骤(在master1上操作)
- 创建Dashboard工作目录
cd k8s/
mkdir dashboard
- 拷贝官方的文件
https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dashboard
- 使用yaml文件生成组件
- 顺序不能错!
kubectl create -f dashboard-rbac.yaml
kubectl create -f dashboard-secret.yaml
kubectl create -f dashboard-configmap.yaml
kubectl create -f dashboard-controller.yaml
kubectl create -f dashboard-service.yaml
- 查看创建在指定的kube-system命名空间下
kubectl get pods -n kube-system
- 查看如何访问
kubectl get pods,svc -n kube-system
- 通过node节点访问
- 谷歌浏览器不支持证书的颁发,无法访问
- 编写脚本生成自签证书
vim dashboard-cert.sh
bash dashboard-cert.sh /root/k8s/k8s-cert/
cat > dashboard-csr.json <<EOF
{
"CN": "Dashboard",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "BeiJing",
"ST": "BeiJing"
}
]
}
EOF
K8S_CA=$1
cfssl gencert -ca=$K8S_CA/ca.pem -ca-key=$K8S_CA/ca-key.pem -config=$K8S_CA/ca-config.json -profile=kubernetes dashboard-csr.json | cfssljson -bare dashboard
kubectl delete secret kubernetes-dashboard-certs -n kube-system
kubectl create secret generic kubernetes-dashboard-certs --from-file=./ -n kube-system
- 添加证书两行,apply重新部署
vim dashboard-controller.yaml
kubectl apply -f dashboard-controller.yaml
测试:
- 生成令牌
kubectl create -f k8s-admin.yaml
- 保存
kubectl get secret -n kube-system
- 查看令牌使用令牌登录
kubectl describe secret dashboard-admin-token-lrwwp -n kube-system
实验结果
Dashboard界面结构
顶部操作区
- 在这里用户可以搜索群集中资源、创建资源或退出。
左边菜单
- Cluster级别资源:
- Namespace级别资源:
中间主区域
- 点击左边导航菜单,中间主区域就会显示该资源所有实例。
Dashboard基本使用场景
部署Deployment
- 单机顶部操作区的添加按钮:
- 用户可以直接输入要部署应用的名字、镜像、副本数等信息。也可以上传Yaml文件。
在线操作
- 每种资源都可以单击按钮执行各种操作。
- 下图与kubectl edit效果相同
查看资源详细信息
- 单击实例名字则可看到详细信息,与kubectl describe一样
查看pod日志
- 在Pod及其父资源页面单击横杠按钮可以查看pod日志。与kubectl logs一样。
- 我们通过访问一个nginx web页面查看日志
kubectl expose deployment nginx --port=83 --target-port=80 --type=NodePort
- 输入http://192.168.18.20:36559