ITPub博客

首页 > 云计算 > 开源云工具 > 如何使用 Rancher 创建 Kubernetes 集群并进行可视化管理

如何使用 Rancher 创建 Kubernetes 集群并进行可视化管理

原创 开源云工具 作者:java06051515 时间:2018-12-14 11:57:09 0 删除 编辑

写在前面:本文是 系列文章的第一篇,本文的一个重要目的是帮助您如何使用 Rancher 从零开始搭建一个 Kubernetes 集群,并初步了解多集群可视化管理。 系列后续还会陆续推出更多相关系列文章详细介绍更丰富的 Kubernetes 安装部署、集群管理实践与原理解析,尽情期待~ 天才都会三个神操作  Watching  &  Star  &  Fork

介绍

Kubernetes 是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

通过 Kubernetes 你可以:

  • 快速部署应用

  • 快速扩展应用

  • 无缝对接新的应用功能

  • 节省资源,优化硬件资源的使用

我们的目标是促进完善组件和工具的生态系统,以减轻应用程序在公有云或私有云中运行的负担。

Kubernetes 特点

  • 可移植:支持公有云,私有云,混合云,多重云(multi-cloud)

  • 可扩展:模块化, 插件化, 可挂载, 可组合

  • 自动化:自动部署,自动重启,自动复制,自动伸缩/扩展

Kubernetes 是 Google 2014 年创建管理的,是 Google 10 多年大规模容器管理技术 Borg 的开源版本。

常见的创建 Kubernetes 集群的方式

  • 使用 Kubemini 创建 Kubernetes 集群

  • 使用 RKE 创建 Kubernetes 集群

  • 使用 Rancher 创建 Kubrnetes 集群

本文主要讲述  如何使用 Rancher 创建 Kubernetes 集群并进行可视化的集群管理 。后续会陆续发布其他方式创建 Kubernetes 集群,并在本文中给出相关链接,请您持续关注

Rancher 创建与管理 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

本步骤概述安装 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 Server

本指南为安装 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 管理控制台:

第四步:安装 Etcd 节点与控制节点

本指南为安装 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 集群

查看集群,可以看到集群各节点状态还在准备中

【Global】菜单可查看当前存在的集群并切换到您需要管理的集群

【Cluster】菜单可以可视化的查看和管理某个具体的集群信息,也可以图表化查看集群资源的消耗情况

【Node】菜单可以查看与管理节点服务器

【Project/Namespace】菜单可以查看与管理命名空间

【Members】菜单可以管理 Rancher 管理控制台的成员信息,包括账户、密码、角色/权限等

【Tools】菜单可以管理告警、提醒与日志信息

点击右下角的【Language】可以切换语言,如果您更习惯看中文,恭喜~您可以选择【简体中文】获得更好的管理体验:)

结论

Rancher 为 DevOps 工程师提供了一个直观的用户界面来管理他们的服务容器,用户不需要深入了解 Kubernetes 概念就可以开始使用 Rancher。

Rancher 包含应用商店,支持一键式部署 Helm 和 Compose 模板。Rancher 通过各种云、本地生态系统产品认证,其中包括安全工具,监控系统,容器仓库以及存储和网络驱动程序。

K8S 相关概念

节点(Node)

Kubernetes 集群中的计算能力由 Node 提供,Kubernetes 集群中的 Node 是所有 Pod 运行所在的工作主机,可以是物理机也可以是虚拟机。工作主机的统一特征是上面要运行 Kubelet 管理节点上运行的容器。

命名空间(Namespace)

命名空间为 Kubernetes 集群提供虚拟的隔离作用。Kubernetes 集群初始有 3 个命名空间,分别是默认命名空间 default、系统命名空间 kube-system 和 kube-public ,除此以外,管理员可以创建新的命名空间以满足需求。

Pod

Pod是 Kubernetes 部署应用或服务的最小的基本单位。一个Pod 封装多个应用容器(也可以只有一个容器)、存储资源、一个独立的网络 IP 以及管理控制容器运行方式的策略选项。

副本控制器(Replication Controller,RC)

RC 确保任何时候 Kubernetes 集群中有指定数量的 pod 副本(replicas)在运行。通过监控运行中的 Pod 来保证集群中运行指定数目的 Pod 副本。指定的数目可以是多个也可以是1个;少于指定数目,RC 就会启动运行新的 Pod 副本;多于指定数目,RC 就会终止多余的 Pod 副本。

副本集(Replica Set,RS)

ReplicaSet(RS)是 RC 的升级版本,唯一区别是对选择器的支持,RS 能支持更多种类的匹配模式。副本集对象一般不单独使用,而是作为 Deployment 的理想状态参数使用。

部署(Deployment)

部署表示用户对 Kubernetes 集群的一次更新操作。部署比 RS 应用更广,可以是创建一个新的服务,更新一个新的服务,也可以是滚动升级一个服务。滚动升级一个服务,实际是创建一个新的 RS,然后逐渐将新 RS 中副本数增加到理想状态,将旧 RS 中的副本数减小到 0 的复合操作;这样一个复合操作用一个RS是不太好描述的,所以用一个更通用的 Deployment 来描述。不建议您手动管理利用 Deployment 创建的 RS。

服务(Service)

Service 也是 Kubernetes 的基本操作单元,是真实应用服务的抽象,每一个服务后面都有很多对应的容器来提供支持,通过 Kube-Proxy 的 port 和服务 selector 决定服务请求传递给后端的容器,对外表现为一个单一访问接口,外部不需要了解后端如何运行,这给扩展或维护后端带来很大的好处。

标签(labels)

Labels 的实质是附着在资源对象上的一系列 Key/Value 键值对,用于指定对用户有意义的对象的属性,标签对内核系统是没有直接意义的。标签可以在创建一个对象的时候直接赋予,也可以在后期随时修改,每一个对象可以拥有多个标签,但 key 值必须唯一。

存储卷(Volume)

Kubernetes 集群中的存储卷跟 Docker 的存储卷有些类似,只不过 Docker 的存储卷作用范围为一个容器,而 Kubernetes 的存储卷的生命周期和作用范围是一个 Pod。每个 Pod 中声明的存储卷由 Pod 中的所有容器共享。支持使用 Persistent Volume Claim 即 PVC 这种逻辑存储,使用者可以忽略后台的实际存储技术,具体关于 Persistent Volumn(pv)的配置由存储管理员来配置。

持久存储卷(Persistent Volume,PV)和持久存储卷声明(Persistent Volume Claim,PVC)

PV 和 PVC 使得 Kubernetes 集群具备了存储的逻辑抽象能力,使得在配置 Pod 的逻辑里可以忽略对实际后台存储技术的配置,而把这项配置的工作交给 PV 的配置者。存储的 PV 和 PVC 的这种关系,跟计算的 Node 和 Pod 的关系是非常类似的;PV 和 Node 是资源的提供者,根据集群的基础设施变化而变化,由 Kubernetes 集群管理员配置;而 PVC 和 Pod是资源的使用者,根据业务服务的需求变化而变化,由 Kubernetes 集群的使用者即服务的管理员来配置。

Ingress

Ingress 是授权入站连接到达集群服务的规则集合。你可以通过 Ingress 配置提供外部可访问的 URL、负载均衡、SSL、基于名称的虚拟主机等。用户通过 POST Ingress 资源到 API server 的方式来请求 Ingress。 Ingress controller 负责实现 Ingress,通常使用负载均衡器,它还可以配置边界路由和其他前端,这有助于以 HA 方式处理流量。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31559758/viewspace-2284866/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-10-26

  • 博文量
    167
  • 访问量
    150583