说明
我们用kubernetes去管理Docker集群,即可以将Docker看成Kubernetes内部使用的低级别组件。另外,kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。希望我这篇文章中简单的描述能让你对两者有所理解和认识。
机器准备
两台虚拟机
Centos版本需要大于7.5
192.168.20.85 master
192.168.20.20 node
部署流程
第一步:修改主机名
启动后第一件事是修改hostname:
- 打开/etc/hostname文件;
- 删除所有内容,再添加”master”,保存后退出;
- 执行命令reboot重启虚拟机
- 确保防火墙已经关闭(systemctl status firewalld)
- 参照 安装配置Docker环境
第二步:安装rancher
docker run -d --restart=unless-stopped -p 8080:8080 rancher/server:stable
执行错误:重启docker:systemctl restart docker
执行成功后,执行docker ps命令得到该容器的ID,例如“87f432784321”,再执行docker logs -f 87f432784321,就能看到该容器的实时日志,如下图:
日志滚动到下列信息的时候,rancher已经启动完成了:
第三步:虚拟机的ip是192.168.20.85,所以我们在当前的windows下打开浏览器输入“192.168.20.85:8080”,即可看到rancher的欢迎页面,如下图:
如下图,在网页的右下角选择语言“简体中文”:
创建kubernetes环境
如下图,点击“环境管理”:
如下图,点击“添加环境”:
如下图,创建一个kubernetes环境:
如下图,此时将鼠标放到红框位置,就能看见新增的“kubernetes001”环境了,点击下图蓝框位置,切换到”kubernetes001”环境:
切换到“kubernetes001”环境的页面如下图所示,提示我们要至少加入一个主机,点击红框中的“添加主机”:
如下图,请确认今后新加的主机通过什么地址可以访问到当前的rancher服务器,本次实战的虚拟机ip就是192.168.20.85,所以不用更改直接点击下面的“保存”按钮即可,如果您的机器有多个ip或者新机器可用host访问当前rancher,请选择“其他地址”并填入正确信息;
跳转的页面如下图所示,红框中的内容就是新的主机加入时需要数据的命令,请复制并妥善保存,然后点击“关闭”:
现在我们已经创建了kubernetes环境,主机加入时用到的命令也已经拿到,是时候添加新的主机了;
在node1上打开控制台,然后执行上面那个命令;
执行时会在node1的docker上运行一个rancher/agent容器,并注册到kubernetes环境;
部署tomcat服务
点击顶部的”KUBERNETES”菜单,再点击”>_CLI”子菜单,就会出现控制台页面,我们可以在此页面输入kubectl命令,如下图:
在上图的控制台输入以下命令,立即创建一个deploy,镜像是tomcat,两个副本:
kubectl run tomcat001 --image=tomcat:7.0.82-jre7 --replicas=2 --port=8080
去dashboard(仪表盘)页面,点击左侧的“部署”,可以看到我们刚刚创建的tomcat001,如下图:
等下载镜像完成,并且启动容器成功后,此步骤可能慢,页面更新如下:
回到刚刚输入命令行的控制台,输入以下命令创建一个服务:
kubectl expose deploy tomcat001 --type=NodePort --target-port=8080
再去dashboard页面点击左下角的”服务“,就能看到刚刚创建的服务了,并且8080端口被映射到node1的30991端口,如下图:
node1的ip是192.168.119.153,所以,此时我们在windows系统中打开浏览器,输入:192.168.119.153:30991 ,就能访问到kubernetes环境中的tomcat容器了,如下图,熟悉的tomcat欢迎页:
k8s资料参考:
https://kubernetes.io/zh/docs/tutorials/kubernetes-basics/
概念:
https://kubernetes.io/zh/docs/concepts/overview/working-with-objects/kubernetes-objects/
https://kubernetes.io/docs/concepts/workloads/pods/pod-overview/
https://kubernetes.io/zh/docs/concepts/workloads/controllers/deployment/
https://kubernetes.io/zh/docs/concepts/services-networking/service/