Centos上Kubernetes配置Dashboard

Posted by AlstonWilliams on February 17, 2019

如果使用官方的tutorial来安装配置Kubernetes集群,Dashboard这个模块应该已经自带了.然而,谁让我们大中华享受不到那种待遇呢?

这里我们还是通过https://github.com/kubernetes/dashboard这上面的那个脚本来启动Dashboard.但是,因为在Centos7上从仓库安装的Kubernetes会有一些默认的配置,这些配置使我们不能正常的只是用那个脚本来创建一下相应的Service就好.所以,我们还需要修改一些配置.如果你不修改的话,就会因为无法访问ApiServer而启动不了Dashboard.

首先,修改/etc/kubernetes/apiserver文件,在修改之前,内容应该如下图所示:

我们修改其中的**KUBE_API_ADDRESS **那部分,将其修改成任何地址都可以访问:

默认情况下,其配置是只能本地访问,而因为Dashboard运行在由Docker daemon划分的一个子网的一个容器中,相当于和Kubernetes Apiserver并不是在同一个网络中,所以访问不了.将ApiServer配置成从任何地址都可以访问,就可以解决这个问题.应该也有其他的方法也可以解决此问题.但是这样最为简单.

然后,通过下面的命令重启ApiServer: sudo systemctl restart kube-apiserver

然后,我们配置Dashboard连接的ApiServer的地址.在我们上面下载的那个脚本中的第54-58行,有关于它的配置,但是默认是被注释掉的:

我们需要将其换成** http://docker_bridge_address:apiserver_port.其中docker_bridge_address是docker daemon创建的网桥的地址,默认是 172.17.0.1.也不一定,你可以在主机上通过 ifconfig 或者 ip addr命令查看.apiserver_port是Apiserver的端口号,如果你没有设置过,应该是 8080**:

因为Docker容器是和docker daemon创建的那个网桥处于同一网段,而这个网桥的Ip实际上又是主机对Docker容器而言的Ip地址.所以这样Dashboard容器就可以访问主机上Apiserver接口了.

我们还需要配置Dashboard不使用gcr.io上面的镜像,而是使用docker.io上面的一个同步的镜像.就是如上图中的第49行中所示的那样.

然后,通过下面的命令来创建对应的Deployment等: ** kubectl create -f kubernetes-dashboard.yaml **

如果这条命令操作成功,我们会看到如下图所示的输出:

从上图中,我们可以看到,我们可以通过30090来访问这个Kubernetes-Dashboard.

我们查看一下* Deployment, Pods, Services*等:

我们可以看到,kubernetes-dashboard的Pod已经运行成功了.

最后,我们从浏览器中查看一下正确运行的结果: