Kubernetes Web UI搭建
这节我以搭建Kubernetes Web UI(kubernetes-dashboard)来简要演示如何使用Docker私有库。
由于我的Kubernetes集群无法直接从gcr.io拉取kubernetes-dashboard的镜像,我事先下载了镜像文件并使用docker load命令加载镜像:
# docker load < kubernetes-dashboard-amd64_v1.1.0.tar.gz # docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry 2 c6c14b3960bd 3 days ago 33.28 MB ubuntu latest 42118e3df429 9 days ago 124.8 MB hello-world latest c54a2cc56cbb 4 weeks ago 1.848 kB 172.28.80.11:5000/kubernetes-dashboard-amd64 v1.1.0 20b7531358be 5 weeks ago 58.52 MB registry 2 8ff6a4aae657 7 weeks ago 171.5 MB
我为加载的kubernetes-dashboard镜像打上私有库的标签并推送到私有库:
# docker tag 20b7531358be 192.168.169.125:5000/kubernetes-dashboard-amd64 # docker push 192.168.169.125:5000/kubernetes-dashboard-amd64
从Kubernetes官网获取了kubernetes-dashboard的配置文件https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml,对其进行编辑如下:
尤其要注意:1 创建的Pods所要拉取的镜像是Docker私有库的192.168.169.125:5000/kubernetes-dashboard-adm64; 2 apiserver-host参数是192.168.169.120:8080,即Kubernetes Master节点的aipserver服务地址。
修改完kubernetes-dashboard.yaml后保存到Kubernetes Master节点192.168.169.120节点上,在该节点上用kubectl create命令创建kubernetes-dashboard:
# kubectl create -f kubernetes-dashboard.yaml
创建完成后,查看Pods和Service的详细信息:
# kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE default nginx 1/1 Running 0 3h kube-system kubernetes-dashboard-4164430742-lqhcg 1/1 Running 0 2h
# kubectl describe pods/kubernetes-dashboard-4164430742-lqhcg --namespace="kube-system" Name: kubernetes-dashboard-4164430742-lqhcg Namespace: kube-system Node: 192.168.169.124/192.168.169.124 Start Time: Mon, 01 Aug 2016 16:12:02 +0800 Labels: app=kubernetes-dashboard,pod-template-hash=4164430742 Status: Running IP: 172.17.17.3 Controllers: ReplicaSet/kubernetes-dashboard-4164430742 Containers: kubernetes-dashboard: Container ID: docker://40ab377c5b8a333487f251547e5de51af63570c31f9ba05fe3030a02cbb3660c Image: 192.168.169.125:5000/kubernetes-dashboard-amd64 Image ID: docker://sha256:20b7531358be693a34eafdedee2954f381a95db469457667afd4ceeb7146cd1f Port: 9090/TCP Args: --apiserver-host=192.168.169.120:8080 QoS Tier: cpu: BestEffort memory: BestEffort State: Running Started: Mon, 01 Aug 2016 16:12:03 +0800 Ready: True Restart Count: 0 Liveness: http-get http://:9090/ delay=30s timeout=30s period=10s #success=1 #failure=3 Environment Variables: Conditions: Type Status Ready True No volumes. No events.
# kubectl describe service/kubernetes-dashboard --namespace="kube-system" Name: kubernetes-dashboard Namespace: kube-system Labels: app=kubernetes-dashboard Selector: app=kubernetes-dashboard Type: NodePort IP: 10.254.213.209 Port: <unset> 80/TCP NodePort: <unset> 31482/TCP Endpoints: 172.17.17.3:9090 Session Affinity: None No events.
从kubernetes-dashboard的service详细信息可以看到,该service绑定到了Node节点的31482端口上。现在,通过浏览器访问该端口就能看到Kubernetes的Web UI: