写在前面:本文是 系列文章的第一篇,本文的一个重要目的是帮助您如何使用 Rancher 从零开始搭建一个 Kubernetes 集群,并初步了解多集群可视化管理。 系列后续还会陆续推出更多相关系列文章详细介绍更丰富的 Kubernetes 安装部署、集群管理实践与原理解析,尽情期待~ 天才都会三个神操作
Watching
&Star
&Fork
Kubernetes 是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
通过 Kubernetes 你可以:
快速部署应用
快速扩展应用
无缝对接新的应用功能
节省资源,优化硬件资源的使用
我们的目标是促进完善组件和工具的生态系统,以减轻应用程序在公有云或私有云中运行的负担。
可移植:支持公有云,私有云,混合云,多重云(multi-cloud)
可扩展:模块化, 插件化, 可挂载, 可组合
自动化:自动部署,自动重启,自动复制,自动伸缩/扩展
Kubernetes 是 Google 2014 年创建管理的,是 Google 10 多年大规模容器管理技术 Borg 的开源版本。
使用 Kubemini 创建 Kubernetes 集群
使用 RKE 创建 Kubernetes 集群
使用 Rancher 创建 Kubrnetes 集群
本文主要讲述 如何使用 Rancher 创建 Kubernetes 集群并进行可视化的集群管理 。后续会陆续发布其他方式创建 Kubernetes 集群,并在本文中给出相关链接,请您持续关注
Rancher 是一套容器管理平台,它可以帮助组织在生产环境中轻松快捷的部署和管理容器。 Rancher 可以轻松地管理各种环境的 Kubernetes,满足 IT 需求并为 DevOps 团队提供支持。
企业级容器管理平台
Rancher 是业界唯一完全开源的企业级容器管理平台,为企业用户提供在生产环境中落地使用容器所需的一切功能与组件。Rancher2.0 基于 Kubernetes 构建。使用 Rancher,DevOps 团队可以轻松测试、部署和管理应用程序,运维团队可以部署、管理和维护一切 Kubernetes 集群,无论集群运行在何基础设施之上。
多集群管理
Rancher 可以更方便的管理 Kubernetes 集群,它可以从头开始轻松部署新集群,甚至可以导入现有的 Kubernetes 集群。
统一运营管理
对于 Rancher,运营团队在开发,测试和生产 Kubernetes 集群中拥有相同的部署和管理工具。
集群包含以下资源:
1 个 Rancher 节点:用于部署 Rancher Server,通过该节点可以实现可视化多集群、跨云管理 Kubernetes 管理
1 个 Etcd 节点:存储主控制节点和工作节点之间的任务调度等数据信息
1 个控制(Controller)节点:部署 Kunbernetes 集群主控制节点,用于管理和监控 Kubernetes 其它的工作节点和存在状态信息。
2 个工作(Worker )节点:部署 Kubernetes 集群的工作节点,用于运行容器化的应用。
完成本指南后您将学会 安装 Docker 环境 、 搭建 Rancher 集群管理环境 、 使用 Rancher 创建 Kubernetes 环境 和 使用 Rancher 进行多集群管理 。
注意: 配置推荐至少 2核 CPU、4GB 内存、40GB 存储、2M 带宽,系统均为 Ubuntu 16.04 LTS。为达到更好的效果,本文创建的 5 台云服务器配置均为 4核 CPU、8GB 内存、200GB 存储、5M 带宽,系统选择 Ubuntu 16.04 LTS。
登陆 滴滴云控制台 购买 5 台 滴滴云 服务器(如果需要完成试验后即删除可以购买按时长配置),配置推荐至少 2核 CPU、4GB 内存、40GB 存储、2M 带宽,系统均为 Ubuntu 16.04 LTS。
登陆 滴滴云 批量创建云服务器,如下图:
购买成功后 DC2 云服务器列表如下图:
注意: 为达到更好的效果,本文创建的 5 台云服务器配置均为 4核 CPU、8GB 内存、200GB 存储、5M 带宽。
本步骤概述安装 Docker 的通用步骤,上一步准备的 5 台云服务器均可按本指南安装 Docker-CE。更详细的 Docker 安装与使用教程请参考
1.检查内核版本:
$ uname - a
输出如下结果,内核版本符合要求(确保内核版本 3.0 以上):
$ Linux 10 - 10 - 73 - 109 4.4.0 - 138 - generic #164-Ubuntu SMP Tue Oct 2 17:16:02 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
2.为了让 Docker 使用 aufs 存储,推荐安装如下两个软件包:
3.添加镜像源:
安装 apt-transport-https 等软件包支持 HTTPS 协议的源:
添加源的 GPG 密钥:
sudo curl - fsSL https : //download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
确认指纹为 “9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88” 的 GPG 公钥:
sudo apt - key fingerprint 0EBFCD88
获取当前系统的代号:
添加 Docker 稳定版的官方软件源,本文中使用 16.04 LTS 对应的系统代号为
xenial
;若使用其他版本 Ubuntu,将代号修改为对应版本的系统代号即可:
添加成功后,再次更新 APT 软件包缓存:
sudo apt - get update
成功添加源之后就可以安装最新版本的 Docker了,软件包名为
docker-ce
:
sudo apt - get install - y docker - ce
除了基于手动添加软件源的方式之外,也可以使用官方提供的脚本来自动化安装 Docker:
sudo curl - fsSL https : //get.docker.com/ | sh
设置开机自动启动:
检查安装:
每次重启 Docker 后,可以通过查看 Docker 信息确保服务已经正常运行:
本指南为安装 Rancher 的通用步骤,从上述云服务器中挑选一台按照本指南安装 Rancher Server 即可
安装和运行Rancher Server,运行如下命令会从 Docker Hub 仓库中拉取 Rancher 镜像并完成安装:
打开浏览器,输入
,server_ip 替换为运行 Rancher 容器主机的 IP;如本文中安装 Rancher Server 的云服务器公网 IP 地址为
116.85.46.53
,所以 Rancher 管理界面的访问地址为 ,如下图:
因为是自动使用的自签名证书,在第一次登录会提示安全授信问题,信任即可:
设置管理密码(第一次登录会要求设置管理员密码,默认管理员账号为:
admin
):
设置 Rancher Server URL (这个 Rancher Server URL 是 agent 节点注册的地址,需要保证这个地址能够被其他主机访问):
进入 Rancher Server 管理控制台:
本指南为安装 Rancher 的通用步骤,从上述云服务器中挑选两台分别作为 Etcd 节点和控制节点进行安装即可。
点击【Add Cluster】进入添加集群页面,设置集群名称:
k8s-cluster-rancher
,如下图:
设置 Etcd 节点选项:
【Node Options】-【Node Role】中只勾选【Etcd】
【Node Options】-【Node Address】-【Public Address】中天蝎 Etcd 云服务器的公网 IP 地址,如示例中的:
116.85.13.168
【Node Options】-【Node Address】-【Internal Address】中天蝎 Etcd 云服务器的内网 IP 地址,如示例中的:
10.10.150.195
【Node Options】-【Node Name】中填写 Etcd 云服务器的名称,如示例中的:
kubernetes-etc-x
设置效果如下图:
下方会自动生成 Etcd 节点的配置命令:
复制配置命令到 Ectd 云服务器终端并运行,输出如下:
Etcd 节点安装完成后会自动连接到 Rancher 管理服务器,管理控制台底部会提示
1 new node has registered
。
同样的步骤安装控制节点:
【Node Options】-【Node Role】中只勾选【Control Plane】
【Node Options】-【Node Address】-【Public Address】中天蝎 Etcd 云服务器的公网 IP 地址,如示例中的:
116.85.60.45
【Node Options】-【Node Address】-【Internal Address】中天蝎 Etcd 云服务器的内网 IP 地址,如示例中的:
10.10.0.89
【Node Options】-【Node Name】中填写 Control Plane 云服务器的名称,如示例中的:
kubernetes-controller-x
设置效果如下图:
下方会自动生成 Control Plane 节点的配置命令:
复制配置命令到 Control Plane 云服务器终端并运行,输出如下:
Control Plane 节点安装完成后会自动连接到 Rancher 管理服务器,管理控制台底部会提示
2 new node has registered
。
本指南为安装工作节点的通用步骤,从上述云服务器中挑选两台作为工作节点进行安装即可。
重复 第四步 中的步骤安装 第一个工作节点 ,详情如下:
【Node Options】-【Node Role】中只勾选【Worker】
【Node Options】-【Node Address】-【Public Address】中填写第一台工作节点云服务器的公网 IP 地址,如示例中的:
116.85.30.97
【Node Options】-【Node Address】-【Internal Address】中填写第一台工作节点云服务器的内网 IP 地址,如示例中的:
10.10.232.55
【Node Options】-【Node Name】中填写第一台工作节点云服务器的名称,如示例中的:
kubernetes-worker01-x
设置效果如下图:
下方会自动生成工作节点的配置命令:
复制配置命令到
Worker1
云服务器终端并运行,输出如下:
Worker1
节点安装完成后会自动连接到 Rancher 管理服务器,管理控制台底部会提示
3 new node has registered
。
重复如上步骤安装 第二个工作节点 ,详情如下:
【Node Options】-【Node Role】中只勾选【Worker】
【Node Options】-【Node Address】-【Public Address】中填写第二台工作节点云服务器的公网 IP 地址,如示例中的:
116.85.37.60
【Node Options】-【Node Address】-【Internal Address】中填写第二台工作节点云服务器的内网 IP 地址,如示例中的:
10.10.148.43
【Node Options】-【Node Name】中填写第二台工作节点云服务器的名称,如示例中的:
kubernetes-worker02-x
设置效果如下图:
下方会自动生成工作节点的配置命令:
复制配置命令到
Worker2
云服务器终端并运行,输出如下:
Worker2
节点安装完成后会自动连接到Rancher管理服务器,管理控制台底部会提示
4 new node has registered
。
至此,Kubernetes 集群所有节点均已成功安装,点击【Done】完成集群设置即可。
可以按照上述方法添加多个 Kubernetes 集群,本文为更好的演示多集群管理效果,添加了多个 Kubernetes 集群
点击右下角的【Language】可以切换语言,如果您更习惯看中文,恭喜~您可以选择【简体中文】获得更好的管理体验:)
Rancher 为 DevOps 工程师提供了一个直观的用户界面来管理他们的服务容器,用户不需要深入了解 Kubernetes 概念就可以开始使用 Rancher。
Rancher 包含应用商店,支持一键式部署 Helm 和 Compose 模板。Rancher 通过各种云、本地生态系统产品认证,其中包括安全工具,监控系统,容器仓库以及存储和网络驱动程序。
Kubernetes 集群中的计算能力由 Node 提供,Kubernetes 集群中的 Node 是所有 Pod 运行所在的工作主机,可以是物理机也可以是虚拟机。工作主机的统一特征是上面要运行 Kubelet 管理节点上运行的容器。
命名空间为 Kubernetes 集群提供虚拟的隔离作用。Kubernetes 集群初始有 3 个命名空间,分别是默认命名空间 default、系统命名空间 kube-system 和 kube-public ,除此以外,管理员可以创建新的命名空间以满足需求。
Pod是 Kubernetes 部署应用或服务的最小的基本单位。一个Pod 封装多个应用容器(也可以只有一个容器)、存储资源、一个独立的网络 IP 以及管理控制容器运行方式的策略选项。
RC 确保任何时候 Kubernetes 集群中有指定数量的 pod 副本(replicas)在运行。通过监控运行中的 Pod 来保证集群中运行指定数目的 Pod 副本。指定的数目可以是多个也可以是1个;少于指定数目,RC 就会启动运行新的 Pod 副本;多于指定数目,RC 就会终止多余的 Pod 副本。
ReplicaSet(RS)是 RC 的升级版本,唯一区别是对选择器的支持,RS 能支持更多种类的匹配模式。副本集对象一般不单独使用,而是作为 Deployment 的理想状态参数使用。
部署表示用户对 Kubernetes 集群的一次更新操作。部署比 RS 应用更广,可以是创建一个新的服务,更新一个新的服务,也可以是滚动升级一个服务。滚动升级一个服务,实际是创建一个新的 RS,然后逐渐将新 RS 中副本数增加到理想状态,将旧 RS 中的副本数减小到 0 的复合操作;这样一个复合操作用一个RS是不太好描述的,所以用一个更通用的 Deployment 来描述。不建议您手动管理利用 Deployment 创建的 RS。
Service 也是 Kubernetes 的基本操作单元,是真实应用服务的抽象,每一个服务后面都有很多对应的容器来提供支持,通过 Kube-Proxy 的 port 和服务 selector 决定服务请求传递给后端的容器,对外表现为一个单一访问接口,外部不需要了解后端如何运行,这给扩展或维护后端带来很大的好处。
Labels 的实质是附着在资源对象上的一系列 Key/Value 键值对,用于指定对用户有意义的对象的属性,标签对内核系统是没有直接意义的。标签可以在创建一个对象的时候直接赋予,也可以在后期随时修改,每一个对象可以拥有多个标签,但 key 值必须唯一。
Kubernetes 集群中的存储卷跟 Docker 的存储卷有些类似,只不过 Docker 的存储卷作用范围为一个容器,而 Kubernetes 的存储卷的生命周期和作用范围是一个 Pod。每个 Pod 中声明的存储卷由 Pod 中的所有容器共享。支持使用 Persistent Volume Claim 即 PVC 这种逻辑存储,使用者可以忽略后台的实际存储技术,具体关于 Persistent Volumn(pv)的配置由存储管理员来配置。
PV 和 PVC 使得 Kubernetes 集群具备了存储的逻辑抽象能力,使得在配置 Pod 的逻辑里可以忽略对实际后台存储技术的配置,而把这项配置的工作交给 PV 的配置者。存储的 PV 和 PVC 的这种关系,跟计算的 Node 和 Pod 的关系是非常类似的;PV 和 Node 是资源的提供者,根据集群的基础设施变化而变化,由 Kubernetes 集群管理员配置;而 PVC 和 Pod是资源的使用者,根据业务服务的需求变化而变化,由 Kubernetes 集群的使用者即服务的管理员来配置。
Ingress 是授权入站连接到达集群服务的规则集合。你可以通过 Ingress 配置提供外部可访问的 URL、负载均衡、SSL、基于名称的虚拟主机等。用户通过 POST Ingress 资源到 API server 的方式来请求 Ingress。 Ingress controller 负责实现 Ingress,通常使用负载均衡器,它还可以配置边界路由和其他前端,这有助于以 HA 方式处理流量。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31559758/viewspace-2284866/,如需转载,请注明出处,否则将追究法律责任。