一.K8s概述

k8s全称kubernetes,这个名字大家应该都不陌生,k8s是为容器服务而生的一个可移植容器的编排管理工具,越来越多的公司正在拥抱k8s,并且当前k8s已经主导了云业务流程,推动了微服务架构等热门技术的普及和落地,正在如火如荼的发展。
那么,K8S实现了什么?
从架构设计层面,我们关注的可用性,伸缩性都可以结合k8s得到很好的解决,如果你想使用微服务架构,搭配k8s,真的是完美,再从部署运维层面,服务部署,服务监控,应用扩容和故障处理,k8s都提供了很好的解决方案。
具体来说,主要包括以下几点:
 服务发现与调度
 负载均衡
 服务自愈
 服务弹性扩容
 横向扩容
 存储卷挂载
总而言之,k8s可以使我们应用的部署和运维更加方便。

二. K8s的集群架构

 主节点,承载 k8s 的控制和管理整个集群系统的控制面板
 工作节点,运行用户实际的应用


三. 使用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解析:

 

Logo

开源、云原生的融合云平台

更多推荐