强大多云混合多K8S集群管理平台Rancher入门实战

@

概述

定义

Rancher 官网 https://rancher.com/

Rancher 官网文档 https://rancher.com/docs/

Rancher 最新版本2.6官网文档 https://rancher.com/docs/

Rancher GitHub源码地址 https://github.com/apache/incubator-seatunnel

Rancher是一个为在生产中部署容器的组织构建的完备开源容器管理平台,Rancher使Kubernetes在任何地方都可以轻松运行,满足it需求并授权给DevOps团队,从数据中心到云端再到边缘,Rancher提供Kubernetes-as-a-Service服务。目前docker镜像最新版本为v2.6.8

Rancher是一个全栈式管理各地的所有Kubernetes集群,同时可以管理多个K8S集群,将它们统一在集中式RBAC下,监控它们,并让您轻松部署和管理。与Rancher同样快速安装和管理K8S集群,还有OpenshiftKubespheresealos,本篇主要实战Rancher的使用。

为何使用

  • Rancher支持集中化认证、权限控制、监控和管理所有的Kubernetes集群。

  • 提供一个简单直接的用户界面给DevOps工程师管理应用程序。

  • 解决企业痛点问题包括多机房跨区域的容器调度,

  • 是规模化生产级Kubernetes的优秀实践。

  • Rancher托管Kubernetes集群操作,部署Kubernetes集群——在本地、在云端和在边缘。

  • Rancher将这些集群统一起来,以确保一致的操作、工作量管理和企业级安全。是一个真正经过实战锤炼过的推荐生产使用Kubernetes集群管理工具。Rancher解决了DevOps团队与Kubernetes部署应用程序和IT人员交付企业关键服务的需求。

  • 对于本地工作负载,我们提供RKE。对于公有云,我们支持所有主要的发行版,包括EKS、AKS和GKE。对于边缘、分支和桌面工作负载,我们提供K3s,一个经过认证的Kubernetes轻量级分发版

  • 简化集群操作,Rancher提供简单、一致的集群操作,包括供应、版本管理、可见性和诊断、监控和警报,以及集中审计。

  • 安全、策略和用户管理,Rancher自动化处理过程并为所有集群应用一组一致的用户访问和安全策略。

  • 共享工具和服务,Rancher提供了丰富的服务目录,用于构建、部署和扩展容器化应用程序,包括应用程序打包装、CI/CD、日志、监控和服务网格。

image-20220827104007662

其他产品

  • RKE:Rancher Kubernetes Engine (RKE)是一个cncf认证的Kubernetes发行版,完全运行在Docker容器中。它可以在裸机和虚拟化服务器上工作。RKE解决了安装复杂性的问题,这是Kubernetes社区的一个常见问题。通过RKE, Kubernetes的安装和操作既简化又易于自动化,它完全独立于您正在运行的操作系统和平台。只要你能运行一个支持的Docker版本,你就可以用RKE部署和运行Kubernetes;只用几分钟就能从一个命令构建一个集群,它的声明式配置使Kubernetes的升级是原子的、安全的。
  • K3S:相信不少人对K8S已经了解很多,而Rancher官方还提供一个产品K3S,其为一个轻量级Kubernetes,安装方便,资源消耗小只占原来一半内存,所有二进制文件小于100mb。
    • Rancher与K3s一起使用时配备了一个简单而完整的解决方案来运行Kubernetes。
    • K3s简化了边缘部署,能够快速启动数千个集群,Rancher通过Rancher Continuous Delivery帮助K3s用户管理大量集群,为用户提供了一个控制器,使他们能够有效地管理边缘的Kubernetes。
    • 使用场景
      • Edge
      • IoT
      • CI
      • 开发和测试
      • ARM
      • 嵌入K8s

image-20220827103153175

  • Longhorn:是100%开源的,为Kubernetes构建的分布式块存储。虽然由Rancher Labs启动,Longhorn现在是cncf管理的项目。当与Rancher一起使用时,Longhorn可以提高开发人员和ITOps的效率,通过使持久存储易于部署,只需一次点击,而且没有专有替代方案的成本开销。它还减少了管理数据和操作环境所需的资源,使团队能够专注于更快地交付代码,交付更好的应用程序。

安装

简述

  • Rancher可以从托管提供商提供Kubernetes和计算节点,然后在其上安装Kubernetes,或者导入运行在任何地方的现有Kubernetes集群。
  • Rancher在Kubernetes之上增加了巨大的价值,首先通过为所有集群集中身份验证和基于角色的访问控制(RBAC),使全局管理员能够从一个位置控制集群访问。
  • Rancher可以对集群及其资源进行详细的监控和警报,将日志发送给外部提供商,并通过应用目录直接与Helm集成。如果有外部CI/CD系统,可以把它插入Rancher,但如果没有Rancher甚至帮助自动部署和升级工作负载。

规划

从Rancher开始只需2个简单的步骤就可以看出其极简单部署方式

  • 安装dokcer的主机
  • 通过docker直接部署Rancher

使用四台服务器,一台单独安装Rancher,然后通过Rancher部署一个K8S集群,其中一台安装K8S的master和node,剩余两台安装node。

基础环境

  • 设置主机名
# 设置主机名,可以根据规划名称部署如rancher,k8s-master01,k8s-node01,k8s-node02,我这里就不配置了
hostnamectl set-hostname rancher
  • 主机和IP的Host配置
  • 主机安全配置
    • 关闭防火墙
    • SELINUX=disabled
  • 配置时间同步
# 配置crond任务
0 */1 * * * ntpdate time1.aliyun.com
  • 关闭swap(K8S集群节点)
# 默认开启,注释掉
vim /etc/fstab
# /dev/mapper/centos-swap swap                    swap    defaults        0 0

# 临时关闭
swapoff -a
  • 配置路由转发
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
# 修改完执行
sysctl -p

Docker安装

  • Rancher本身的安装和基于Rancher安装K8S集群都需要依赖底层容器引擎如Docker,关于Docker知识可以看前面的文章,四台服务器都安装好docker
#更新yum   
sudo yum update
#安装依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#设置镜像仓库为国内的阿里云仓库
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装docker
sudo yum install -y docker-ce
#启动docker
sudo systemctl start docker
#设置开机启动docker
sudo systemctl enable docker

Docker也提供下面简化部署脚本

# 下载部署脚本
curl -fsSL get.docker.com -o get-docker.sh
# 部署docker
sh get-docker.sh

Rancher安装

docker hub官网查找需要安装版本,这里使用最新的2.6.8

image-20220827114234934

# dockcer拉取镜像,通常选择amd,也可以选择docker pull rancher/rancher:v2.6.8-rc1
docker pull rancher/rancher:v2.6.8-rc1-linux-amd64
# 创建挂载目录
mkdir -p /home/commons/rancher/data
# 运行rancher
docker run -d --privileged -p 80:80 -p 443:443 -v /home/commons/rancher/data:/var/lib/rancher/ --restart=always --name rancher-v.2.6.8 rancher/rancher:v2.6.8-rc1-linux-amd64

image-20220827120217283

登录Rancher的web UI,访问http://hadoop2/ 跳转到https://hadoop2

# 通过上面docker ps找到运行后的容器container-id 7eb2c11302a2的日志找到启动登录的密码,如果是docker run安装运行
docker logs 7eb2c11302a2 2>&1 | grep "Bootstrap Password:"
# 如果是Helm安装运行
kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{.data.bootstrapPassword|base64decode}}{{"\n"}}'

进入后有一个默认local集群,这个集群就是是用K3S。创建集群可以点击集群管理,create按钮,左边import存在支持对已存在集群的导入

image-20220827133629004

创建用户

点击配置栏目,点击用户和授权,创建用户,给开发使用可以勾选Standard Users,确认后提交

image-20220827173620056

创建集群

选择custom自定义

image-20220827174509820

其他基本按照默认即可,还有高级选项里NodePort端口可以适当给大一点如30000-50000,进入下一步,先装一台包含所有节点即master和node都有,全选3个

image-20220827174647311

复制后在要安装master的docker宿主机的命令行执行

image-20220827175357741

返回Rancher的web UI的集群管理页面,可以看到刚才创建的集群已经在安装中

image-20220831123741384

等待一段时间安装,看网络情况这里5-10分钟左右,等待时间完毕后可以看下k8s-cluster1集群已经处于active即激活状态

image-20220831125031119

点击左上角的菜单找EXPLORE CLUSTER即探索集群中的k8s-cluster1,或者点击列表后面的EXPLORE,可以显示当前集群的概况信息

image-20220831133617711

添加Node节点

在集群管理页面Clusters的列表中找到name列的k8s-cluster1,点击进入在注册Tab框中只勾选worker节点

image-20220831142815146

拷贝docker run语句后到所有需要安装worker节点机器运行,查看容器节点rancher-agent

image-20220831150125777

等待5-10分钟后查看worker节点容器信息如下

image-20220831150024933

在Rancher的web UI的集群管理页面的机器列表(node名称用的原来hostname没有修改,因此不以hostname为主,可以看下后面roles角色)就已经有刚才安装好处于active激活状态的2台Worker节点

image-20220831155435158

也可以通过集群管理入口查看相关配置

image-20220831145926998

配置kubectl

如果要操作kubectl命令可以直接通过Rancher管理页面的Kubectl Shell来执行

image-20220831154812399

另外如要要在节点主机上直接运行需要如下操作,用Rancher安装好的k8s集群的master节点默认是没有cubectl的命令

image-20220831152442198

通过如下添加kubernetes yum源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

执行kubectl安装

yum install -y kubectl
kubectl get nodes

安装完直接执行kubectl使用连接被拒绝,通过rancher管理页面下载刚创建k8s-cluster1的KubeConfig文件,或者点击下面一个直接拷贝KubeConfig到剪贴板

image-20220831153502273

粘贴配置信息到kube配置路径

# 创建目录
mkdir ~/.kube
# 将k8s-cluster1.yaml里面的内容粘贴到下面文件
vi ~/.kube/config
# 查询所有节点信息
kubectl get pods

image-20220831153900442

创建项目和名称空间

发布应用需要先创建项目和名称空间,找到集群项目和名称管理,创建项目,输入项目名称test,其它4项可以按需配置包括容器资源限制,点击创建项目

image-20220831160112666

在test项目记录点击创建命名空间

image-20220831161751531

这里命名空间是针对k8s的,没有创建新的命名空间是查询只有下面几个默认的命名空间

image-20220831162228326

输入命名空间testns,其他2项可以按需配置包括容器资源限制,点击创建

image-20220831162416922

创建后页面中也有testns这个命名空间,从k8s集群中也可以查找testns命名空间

image-20220831162849194

发布应用

这里以发布一个nginx的Deployments应用为主

image-20220831164438926

选择testns命名空间,发布Deployment的名称testnginx,镜像为nginx:latest,副本数为2

image-20220831170923057

也设置Ports的配置,选择Node Port类型,注意名称不能超过15个字符,nginx容器内部端口80,35000为暴露端口

image-20220831171108725

创建后返回页面,过一会就下载完nginx并运行处理活跃状态

image-20220831171543196

点击testnginx进入可以后可以查看部署的信息,如Pods、Services、Ingresses等,目前有两个副本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vNGUoQAg-1661956704467)(http://www.itxiaoshen.com:3001/assets/1661943335968kbERCAW1.png)]

通过其中一个pod部署节点ckserver1也即是192.168.5.52的IP去访问nginx ,http://ckserver1:35000/ ,成功返回信息(host对应ip配置hosts文件里)

image-20220831172941595

可以很方便调整扩容和缩容的数量

image-20220831173144941

通过kubectl也可以查看对应的信息

image-20220831173940224

偏好设置

比如通过偏好设置可以设置深色主题

image-20220831155201312

**本人博客网站 **IT小神 www.itxiaoshen.com

posted @ 2022-08-31 22:51  itxiaoshen  阅读(1136)  评论(0编辑  收藏  举报