centos7下安装单机版kubernetes实战

    kubernetes是docker分布式解决方案,是当前最火的docker解决方案,一般初学者适合玩单机安装。kubernetes安装很简单,只需要通过yum安装etcd,kubernetes即可。默认kubernetes会有etcd,docker,kube-apiserver,kube-controller-manager,kube-scheduler,kubelet,kube-proxy等七个依赖服务。他们构成了kubenertes生态。从服务可以看出来,kubenertes底层操作的还是docker,因为它本省就是为docker分布式服务的。

    一、直接安装,默认centos7自带了kubernetes的安装源,无需我们额外添加。 

yum install etcd kubernetes -y

    二、稍作配置,主要是针对kube-apiserver,配置文件在/etc/kubernetes目录下,修改kube-apiserver,对外暴露本机地址,另外,安全控制KUBE_ADMISSION_CONTROL也需要做修改。

    centos7下安装单机版kubernetes实战_第1张图片

    去掉了SecurityContextDeny,ServiceAccount 

    三、关闭防火墙,便于外部浏览器直接访问我们的http服务。 

systemctl stop firewalld
systemctl disable firewalld

    四、依次启动服务

systemctl start etcd
systemctl start docker
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler
systemctl start kubelet
systemctl start kube-proxy

    五、该干点什么了,前面我们只是安装了kubenertes,并没有利用它来干活。我们可以通过kubernetes来构建一个tomcat服务,利用mysql做存储,在首页展示一个列表,这也是kubernetes权威指南的示例。 我们需要构建一个mysql服务,另外构建一个tomcat服务,对外提供30001端口访问。这些镜像在docker仓库中都有了,我们需要做的就是通过yml配置文件将这些镜像组织起来,并启动,构建服务。

 1、准备mysql-rc.yaml,这个配置文件是将mysql作为一个resource启动起来,类似docker-compose.yml,这里需要指定版本信息,镜像名称,以及端口号,最后还需要针对mysql设置一个环境变量,就是他的默认密码123456,这样mysql才会进行初始化。因为yaml文件直接粘贴格式会乱,这里直接给出截图:

    centos7下安装单机版kubernetes实战_第2张图片

     作为服务的配置:

    centos7下安装单机版kubernetes实战_第3张图片 

    2、无论是作为资源,还是作为服务,创建命令都是一样的,只不过指定的文件不一样,这里分别启动他们:

    kubectl create -f mysql-rc.yaml

    kubectl create -f mysql-svc.yaml

    centos7下安装单机版kubernetes实战_第4张图片 

     启动服务:

    centos7下安装单机版kubernetes实战_第5张图片

    这个时候是启动了一个docker镜像,运行的是mysql5.7,可以通过docker ps检查一下。

    centos7下安装单机版kubernetes实战_第6张图片 

    我们可以通过kubectl describe pod mysql-xxx,查看mysql作为pod的详细信息,我们可以先通过kubectl get pods得到所有的pods,然后找到mysql的pod,如下所示:

    centos7下安装单机版kubernetes实战_第7张图片

    3、现在有了mysql,我们按照同样的方式构建tomcat,根据kubernetes权威指南的示例,我们稍作修改。因为我们是单机安装,无法通过dns与服务的方式通过mysql服务名直接访问mysql,我们只能通过ip的方式访问mysql,上图中我们通过kubectl describe pod mysql-xxx的命令获得了mysql启动之后docker默认分配的IP:172.17.0.2。现在来准备tomcat的配置文件:

    myweb-rc.yaml

    centos7下安装单机版kubernetes实战_第8张图片

    myweb-svc.yaml

    centos7下安装单机版kubernetes实战_第9张图片

    其中nodePort: 30001表示对外暴露的端口是30001,我们可以通过虚拟机的ip,以及这个30001可以访问我们的服务。 

    4、与mysql一样的方式启动myweb资源和服务。

    centos7下安装单机版kubernetes实战_第10张图片

    一般启动一个资源或者服务可能会不直接显示报错信息,但是当你查看pod详细描述的时候,会发现一直在creating或者pending,表示遇到了错误。

    当你看到如下三个状态的时候,表示启动正常了:

centos7下安装单机版kubernetes实战_第11张图片

5、验证。

    前面我们启动了mysql,tomcat,这个应用会创建一个列表,存入mysql数据库中,当我们访问我们的demo的时候,会在页面显示列表的数据。首先访问tomcat首页:

    当你直接通过浏览器打开,会访问失败,明明开启了服务,而且防火墙也关闭了,为什么还是不能访问,只能由本机才能访问,这里很奇怪,需要暂时开启防火墙,加入一个容许30001端口的规则,然后关闭防火墙就可以了。

    centos7下安装单机版kubernetes实战_第12张图片

    接着访问tomcat首页和项目首页均正常:

     1)、tomcat首页 http://192.168.56.66:30001/

centos7下安装单机版kubernetes实战_第13张图片

     2)、项目首页http://192.168.56.66:30001/demo/

centos7下安装单机版kubernetes实战_第14张图片

    至此,感受了一把kubernetes单机安装与实战,感觉多了一些管理和api,底层其实还是docker,因为它只是docker分布式的一个解决方案,并没有替换docker。

你可能感兴趣的:(云计算)