dashboard简介:
前面Kubernetes 所有的操作我们都是通过命令行工具 kubectl 完成的。为了提供更丰富的用户体验,Kubernetes 还开发了一个基于 Web 的 Dashboard,用户可以用 Kubernetes Dashboard 部署容器化的应用、监控应用的状态、执行故障排查任务以及管理 Kubernetes 各种资源。
在 Kubernetes Dashboard 中可以查看集群中应用的运行状态,也能够创建和修改各种 Kubernetes 资源,比如 Deployment、Job、DaemonSet 等。用户可以 Scale Up/Down Deployment、执行 Rolling Update、重启某个 Pod 或者通过向导部署新的应用。Dashboard 能显示集群中各种资源的状态以及日志信息。
可以说,Kubernetes Dashboard 提供了 kubectl 的绝大部分功能,大家可以根据情况进行选择。
安装环境:
Kubernetes-1.15.0+dashboardv1.10.1
dashboardv1.10.1安装部署
先拉镜像文件
docker pull registry.cn-hangzhou.aliyuncs.com/rsqlh/kubernetes-dashboard:v1.10.1
给镜像打个标签
docker tag registry.cn-hangzhou.aliyuncs.com/rsqlh/kubernetes-dashboard:v1.10.1 10.0.0.70:5000/kubernetes-dashboard:v1.10.1
把镜像文件推私有仓库
docker push 10.0.0.70:5000/kubernetes-dashboard:v1.10.1
创建私钥和证书
cd /etc/kubernetes/pki
openssl genrsa -out dashboard.key 2048
openssl req -new -key dashboard.key -out dashboard.csr -subj "/O=leihb/CN=dashboard"
openssl x509 -req -in dashboard.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out dashboard.crt -days 3650
根据创建的私钥和证书,创建dashboard的secert资源
kubectl create secret generic dashboard-cert -n kube-system --from-file=dashboard.crt=/etc/kubernetes/pki/dashboard.crt --from-file=dashboard.key=/etc/kubernetes/pki/dashboard.key
创建serviceaccount
cat > service-account.yaml << EOF
apiVersion: v1
kind: ServiceAccount
metadata:
name: dashboard-admin
namespace: kube-system
EOF
#创建资源
kubectl create -f service-account.yaml
#每创建一个serviceaccount,都会生成一个与之对应的secrets资源
kubectl get secrets
#根据secrets资源可以获取对应的token
创建RBAC资源
#给servicaccount授权一个集群管理员的权限
cat > ClusterRoleBinding-dashboard.yaml << EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: dashboard-cluster-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: dashboard-admin
namespace: kube-system
EOF
#创建资源
kubectl apply -f ClusterRoleBinding-dashboard.yaml
创建kubernetes-dashboard
cat kubernetes-dashboard.yml << EOF
apiVersion: apps/v1beta2
kind: Deployment
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s-app: kubernetes-dashboard
template:
metadata:
labels:
k8s-app: kubernetes-dashboard
spec:
containers:
- name: kubernetes-dashboard
image: 10.0.0.70:5000/kubernetes-dashboard:v1.10.1
ports:
- containerPort: 8443
protocol: TCP
args:
- --auto-generate-certificates
volumeMounts:
- name: kubernetes-dashboard-certs
mountPath: /certs
- mountPath: /tmp
name: tmp-volume
livenessProbe:
httpGet:
scheme: HTTPS
path: /
port: 8443
initialDelaySeconds: 30
timeoutSeconds: 30
volumes:
- name: kubernetes-dashboard-certs
secret:
secretName: dashboard-cert
- name: tmp-volume
emptyDir: {}
serviceAccountName: dashboard-admin
EOF
#生成dashboard的deploy资源
kubectl create -f kubernetes-dashboard.yml
创建svc资源
cat > kubernetes-dashboard-svc.yml << EOF
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
type: NodePort
ports:
- nodePort: 30443
port: 443
targetPort: 8443
selector:
k8s-app: kubernetes-dashboard
EOF
#生成svc资源
kubectl create -f kubernetes-dashboard-svc.yml
获取serviceaccount的token
[root@master ~]# kubectl get secrets -n kube-system
NAME TYPE DATA AGE
dashboard-admin-token-78wwp kubernetes.io/service-account-token 3 123m
#获取对应的token
kubectl get secret dashboard-admin-token-78wwp -n kube-system -o jsonpath={.data.token}|base64 -d
浏览器打开https:10.0.0.70:30443

dashboard两种登录方式:
令牌/token
#创建一个serviceaccount
kubectl create sa leihb -n default
#创建RBAC资源(给予对应的权限,这里给与一个集群管理员的权限)
kubectl create clusterrolebinding leihb --clusterrole=cluster-admin --serviceaccount=default:leihb
leihb #clusterrolebinding资源名称
--clusterrole #
#获取serviceaccount的token
[root@master ~]# kubectl get secrets -n default
NAME TYPE DATA AGE
default-token-b5fnw kubernetes.io/service-account-token 3 152m
leihb-token-zp77t kubernetes.io/service-account-token 3 64m
#获取对应的token进行登录
kubectl get secret leihb-token-zp77t -o jsonpath={.data.token}|base64 -d
.conf文件登录
#创建一个serviceaccount
kubectl create sa leihb -n default
#创建RBAC资源(给予对应的权限,这里给与一个集群管理员的权限)
kubectl create clusterrolebinding leihb --clusterrole=cluster-admin --serviceaccount=default:leihb
#生成一个集群.conf文件
kubectl config set-cluster leihbcluster --certificate-authority=/etc/kubernetes/pki/ca.crt --server="https://10.0.0.70:6443" --embed-certs=true --kubeconfig=/root/leihb.conf
#解密token,并赋值变量
token=`kubectl get secret leihb-token-zp77t -o jsonpath={.data.token}|base64 -d`
#用token在leihb.conf文件创建一个user
kubectl config set-credentials leihb --token=$token --kubeconfig=/root/leihb.conf
#在leihb.conf文件中生成context
kubectl config set-context leihb@leihbcluster --cluster=leihbcluster --user=leihb --kubeconfig=/root/leihb.conf
#在leihb.conf文件中生成current-context
kubectl config use-context leihb@leihbcluster --kubeconfig=/root/leihb.conf
#把leihb.conf文件sz到桌面,在web页面中加载

