一.K8s概述
k8s全称kubernetes,这个名字大家应该都不陌生,k8s是为容器服务而生的一个可移植容器的编排管理工具,越来越多的公司正在拥抱k8s,并且当前k8s已经主导了云业务流程,推动了微服务架构等热门技术的普及和落地,正在如火如荼的发展。
那么,K8S实现了什么?
从架构设计层面,我们关注的可用性,伸缩性都可以结合k8s得到很好的解决,如果你想使用微服务架构,搭配k8s,真的是完美,再从部署运维层面,服务部署,服务监控,应用扩容和故障处理,k8s都提供了很好的解决方案。
具体来说,主要包括以下几点:
服务发现与调度
负载均衡
服务自愈
服务弹性扩容
横向扩容
存储卷挂载
总而言之,k8s可以使我们应用的部署和运维更加方便。
二. K8s的集群架构
主节点,承载 k8s 的控制和管理整个集群系统的控制面板
工作节点,运行用户实际的应用
![](https://i-blog.csdnimg.cn/blog_migrate/e339f7c3c4adf402ace8631c8aed946c.png#pic_center)
三. 使用Rancher部署k8s
Rancher是业界唯一完全开源的企业级容器管理平台,为企业用户提供在生产环境中落地使用容器所需的一切功能与组件。
Rancher2.0基于Kubernetes构建,使用Rancher,DevOps团队可以轻松测试、部署和管理应用程序,运维团队可以部署、管理和维护一切Kubernetes集群,无论集群运行在何基础设施之上。
安装docker指定版本
curl http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo
yum makecache fast
yum install -y docker-ce
系统准备
systemctl stop firewalld && systemctl disable firewalld
sed -i 's/enforcing/disabled/g' /etc/selinux/config; setenforce 0
systemctl start docker && systemctl enable docker
安装rancher
下载镜像,启动过程约 20 分钟,可以通过 https://集群控制器 访问得知是否已完成启动
docker run -d --privileged --name rancher -v /home/volume/rancher:/var/lib/rancher --restart=unless-stopped -p 70:80 -p 442:443 rancher/rancher:v2.6.2
查看是否启动
.
docker ps -a
查看运行日志
docker ps | grep rancher | awk '{print $1}' | xargs docker logs -f
查看密码
docker logs container-id 2>&1 | grep "Bootstrap Password:"
访问地址:https://192.168.56.109:442
四.K8S集群部署
- 进入集群管理:
- 创建集群:
- 选择 Custom 方式创建:
- 点击下一步之后,勾选集群角色,这里我就在一台机器上部署集群,所以全部勾选
- ip可以不用输入
- Node Role 全部选上
- 登录第一台【Kubernetes】,复制下方命令,在集群对应角色的机器上执行:
docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.1.6 --server https://192.168.30.128 --token tr5bb5j4nhz29kxnwkcmmn6sx9pqzslkfptsfmnsfmgtc77fkncxkm --ca-checksum 9dee301ba8c6172b431de0a8d2bdfe4717f75fc17a894f2ce6560753c61f151a --internal-address 192.168.30.128 --etcd --controlplane --worker
- 执行完之后,页面会出现
注册成功
的提示:
- 此时集群正处于准备状态中等待一段时间集群自动搭建完成:
错误1:问题
如果不出意外,你会一直卡在Pre-pulling kubernetes images这里(我自己尝试了6-7次),这一步大概就是拉取k8s镜像,因为kubernetes镜像是托管在gcr.io下,国内正常网络直接拉,估计也没几个能成功的吧,rancher考虑到这个问题,在阿里云镜像仓库中同步了一份原版的镜像,镜像地址是
registry.cn-hangzhou.aliyuncs.com,我们可以在rancher ui界面的settings的system-default-registry进行设置rancher默认的仓库地址
解决
- 等待一段时间集群自动搭建完成,显示为
active
状态集群就搭建完成:
错误1:Cluster health check failed: Failed to communicate with API server: Get https://10.0.2.15:6443/api/v1/namespaces/kube-system?timeout=45s: dial tcp 127.0.0.1:6443: connect: connection refused
服务器没有关防火墙
systemctl stop firewalld && systemctl disable firewalld
sed -i 's/enforcing/disabled/g' /etc/selinux/config; setenforce 0
- 添加节点:
- 查看集群状态:
- 点击
执行kubectl命令行
:
- 查看集群主机:
角色配置一目了然
- 查看存储卷:
- 添加持久卷:
操作十分方便
- 查看项目及命名空间:
- 添加项目:
- 部署应用:
- 填好相关参数之后,点击
启动
:
可以看到,nginx服务已经正常运行
- 点击
Pod副本数
+
:
可以看到下面运行的nginx pod数立马增加1,这就实现了动态伸缩。
- 打开命令行,新增一个网页:
之前容器挂载目录是/var/www/html
,新增一个网页
- 再新增php网页,测试PHP解析: