5

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

 2 years ago
source link: https://www.cnblogs.com/itxiaoshen/p/16644842.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

强大多云混合多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。
    • 使用场景
      • 开发和测试
      • 嵌入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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK