使用kubeadm搭建Dashboard
系列博文
- 在Linux上使用Kubeadm工具部署Kubernetes
- 带你玩转Docker
- Kubernetes集群之搭建ETCD集群
- Kubernetes集群之Dashboard
- Kubernetes集群之Monitoring
- Kubernetes集群之Logging
- Kubernetes集群之Ingress
- Kubernetes集群之Redis Sentinel集群
- Kubernetes集群之Kafka和ZooKeeper
下载yaml文件
https://rawgit.com/kubernetes/dadashboard/master/src/deploy/kubernetes-dashboard.yaml
- 将镜像
gcr.io/google_containers/kubernetes-dadashboard-amd64:v1.5.0
放进私有库中
修改yaml文件
1. 去掉`imagePullPolicy: Always`,在[漠大神的博客](https://mritd.me/2016/10/29/set-up-kubernetes-cluster-by-kubeadm/#section-6)中将值改为IfNotPresent或者Never,但是仍然出错;
2. image地址改为`192.168.1.78:5000/kubernetes-dashboard-amd64:v1.5.0`
部署
kubectl create -f kubernetes-dashboard.yaml
<<'COMMENT'
deployment "kubernetes-dashboard" created
service "kubernetes-dashboard" created
COMMENT
- 查看deployments
kubectl get deployment --all-namespaces
<<'COMMENT'
NAMESPACE NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
kube-system kube-discovery 1 1 1 1 22h
kube-system kube-dns 1 1 1 1 22h
kube-system kubernetes-dashboard 1 1 1 1 30m
COMMENT
- 查看service
kubectl get service --all-namespaces
<<'COMMENT'
NAMESPACE NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes 10.96.0.1 <none> 443/TCP 23h
kube-system kube-dns 10.96.0.10 <none> 53/UDP,53/TCP 23h
kube-system kubernetes-dashboard 10.101.241.6 <nodes> 80/TCP 34m
COMMENT
- 查看dashboard的端口
kubectl describe svc kubernetes-dashboard --namespace kube-system
<<'COMMENT'
Name: kubernetes-dashboard
Namespace: kube-system
Labels: app=kubernetes-dashboard
Selector: app=kubernetes-dashboard
Type: NodePort
IP: 10.101.241.6
Port: <unset> 80/TCP
NodePort: <unset> 32688/TCP
Endpoints: 10.244.1.14:9090
Session Affinity: None
COMMENT
从中可以看出其类型为NodePort,端口为32688;或者可将该端口固定住(在yaml文件中的service中使用NodePort)。
-
访问dashboard 浏览器中输入:
http://192.168.1.168:32688/
即可 -
删除部署
kubectl delete -f kubernetes-dashboard.yaml
<<'COMMENT'
deployment "kubernetes-dashboard" deleted
service "kubernetes-dashboard" deleted
COMMENT
- 查询Linux暴露出来的端口
netstat -tnlp
使用二进制文件搭建Dashboard
该小节主要配合kubernetes集群的的二进制安装。由于环境变量等问题,不支持单独使用,如有需要请进一步阅读相关博文。
-
官方文件路径:
kubernetes/cluster/addons/dashboard
-
所有的资源可以在这里进行下载
系列博文
- 在CentOS7上使用二进制方式部署Kubernetes
- Kubernetes集群之安全设置
- Kubernetes集群之搭建ETCD集群
- Kubernetes集群之创建kubeconfig文件
- Kubernetes集群之Flannel网络
- Kubernetes集群之Master节点
- Kubernetes集群之高可用性Master集群
- Kubernetes集群之Node节点
- 带你玩转Docker
- Kubernetes集群之Kubedns
- Kubernetes集群之Dashboard
- Kubernetes集群之Monitoring
- Kubernetes集群之Logging
- Kubernetes集群之清除集群
YAML文件
操作服务器IP:192.168.1.171
,即K8s-master
。在此之前,需要对服务器进行准备工作,具体操作请阅读Kubernetes集群之安全设置
- dashboard-contoller.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: kubernetes-dashboard
namespace: kube-system
labels:
k8s-app: kubernetes-dashboard
kubernetes.io/cluster-service: "true"
addonmanager.kubernetes.io/mode: Reconcile
spec:
selector:
matchLabels:
k8s-app: kubernetes-dashboard
template:
metadata:
labels:
k8s-app: kubernetes-dashboard
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ''
spec:
serviceAccountName: dashboard
containers:
- name: kubernetes-dashboard
image: gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.0
resources:
# keep request = limit to keep this container in guaranteed class
limits:
cpu: 100m
memory: 50Mi
requests:
cpu: 100m
memory: 50Mi
ports:
- containerPort: 9090
livenessProbe:
httpGet:
path: /
port: 9090
initialDelaySeconds: 30
timeoutSeconds: 30
tolerations:
- key: "CriticalAddonsOnly"
operator: "Exists"
- dashboard-rbac.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: dashboard
namespace: kube-system
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
name: dashboard
subjects:
- kind: ServiceAccount
name: dashboard
namespace: kube-system
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
- dashboard-service.yaml
apiVersion: v1
kind: Service
metadata:
name: kubernetes-dashboard
namespace: kube-system
labels:
k8s-app: kubernetes-dashboard
kubernetes.io/cluster-service: "true"
addonmanager.kubernetes.io/mode: Reconcile
spec:
type: NodePort
selector:
k8s-app: kubernetes-dashboard
ports:
- port: 80
targetPort: 9090
nodePort: 38888
创建Pod和service
kubectl create -f dashboard/
<<'COMMENT'
deployment "kubernetes-dashboard" created
serviceaccount "dashboard" created
clusterrolebinding "dashboard" created
service "kubernetes-dashboard" created
COMMENT
# 检查 controller
get pods --all-namespaces -o wide
<<'COMMENT'
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE
default my-nginx-3418754612-2zb9g 1/1 Running 0 23m 172.17.0.4 192.168.1.173
default my-nginx-3418754612-qtdhd 1/1 Running 0 23m 172.17.0.5 192.168.1.173
default nginx-ds-3srdx 1/1 Running 0 17h 172.17.0.2 192.168.1.173
kube-system kube-dns-3574069718-m6rmr 3/3 Running 0 28m 172.17.0.3 192.168.1.173
kube-system kubernetes-dashboard-2970940268-n5df0 1/1 Running 0 59s 172.17.0.6 192.168.1.173
COMMENT
kubectl get svc --all-namespaces -o wide
<<'COMMENT'
NAMESPACE NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
default kubernetes 10.254.0.1 <none> 443/TCP 21h <none>
default my-nginx 10.254.5.222 <none> 80/TCP 23m run=my-nginx
default nginx-ds 10.254.79.44 <nodes> 80:8966/TCP 17h app=nginx-ds
kube-system kube-dns 10.254.0.2 <none> 53/UDP,53/TCP 29m k8s-app=kube-dns
kube-system kubernetes-dashboard 10.254.139.40 <nodes> 80:8888/TCP 1m k8s-app=kubernetes-dashboard
COMMENT
访问Dashboard
地址:http://192.168.1.173:38888
本作品由陈健采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。