• 强大多云混合多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 < /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

  • 相关阅读:
    PaaS、 IaaS 和 SaaS 的区别
    spring-boot-starter-data-jpa 配置多个数据源与jpa实体类继承的问题、分页条件查询
    Flutter笔记:桌面应用 窗口定制库 bitsdojo_window
    Keil5生成bin文件教程(一分钟极速生成)
    【数据结构】带头双向循环链表的实现(C语言)
    发布版本自动化记录版本功能方法
    绕不过的并发编程--synchronized原理
    不安全的反序列化(php&java)及漏洞复现
    RNN项目实战——文本输入与预测
    路由器配置单区域(多区域)OSPF
  • 原文地址:https://www.cnblogs.com/itxiaoshen/p/16644842.html