• k8s-部署rancher-页面化管理


    页面化管理 K8s 平台

    大佬原文章,下面拿大佬的文章做的实验测试

    image-20220801175629410

    Rancher 使用介绍

    Rancher 是为使用容器的公司打造的容器管理平台,通过 Rancher,企业不再需要使用一系列开源软件从零开始构建一个容器服务平台。同时 Rancher 还提供了一个全栈容器部署和管理平台,用于管理 Docker 和 Kubernetes。Rancher 官方
    
    • 1
    全栈
    https://so.csdn.net/so/search?q=%E5%85%A8%E6%A0%88&spm=1001.2101.3001.7020
    
    • 1
    Rancher 官方
    http://docs.rancher.cn/
    
    • 1

    1.Rancher API Server 的功能

    Rancher API Server 是基于嵌入式 Kubernetes API Server 和 ETCD 数据库建立的,它提供了以下功能

    授权和角色权限控制
    **用户管理:** Rancher API Server 除了管理用户在公司内部使用的认证信息之外,还可以管理用户访问外部服务所需的认证信息。
    
    • 1
    **授权:** Rancher API Serrver 可以管理权限控制策略和安全策略。
    
    • 1
    使用 Kubernetes 的功能
    1-运行 Kubernetes 集群: Rancher API Server 不仅可以在已经存在的节点上运行 K8s 集群,还可以对 K8s 集群进行版本升级。
    
    2-应用商店管理: Rancher 可以使用 Helm Charts 应用商店重复部署应用。
    
    3-项目管理: 项目是由一个 K8s 集群内的多个命名空间和多个访问控制策略组成,允许用户以组为单位,管理多个命名空间。
    
    4-流水线: Rancher 支持对每一个项目单独配置流水线。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    查看集群信息
    1-日志: Rancher 可以和多种主流日志工具集成(如:ELK)
    
    2-监控: 使用 Rancher,我们可以通过 Prometheus 监控集群节点、Kubernetes 组件、软件部署的状态和进度。
    
    3-告警信息: 当我们 K8s 集群内出现问题时,Rancher 会在界面上进行提示。
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.Rancher 主要组件和功能图示

    在这里插入图片描述

    Rancher 提供的功能:
    1-支持 K8s 集群的身份验证和基于角色的访问控制(RBAC),使管理员可以全方面的控制所有集群的访问。
    
    2-支持 K8s 资源监控,并在需要时发送告警,同时可以将容器内的日志发送给外部日志系统,还可以通过应用商店与 Helm 集成。
    
    3-支持与外部的 CI/CD 流水线系统进行对接,同时 Rancher 本身也提供了简单易用的流水线来帮忙我们自动部署和升级工作负载。
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    二、Rancher 安装

    我们这里安装是在 Kubernetes 的基础上,你们可以看我之前博客

    Rancher 的部署可以有三种架构:

    • 高可用 Kubernetes 安装: 建议使用 Kubernetes 程序包管理器 Helm 在专用的 Kubernetes 集群上安装 Rancher。在 RKE 集群中,需要使用三个节点以实现高可用性。在 K3s 集群(轻量级kubernetes)中,仅需要两个节点即可。
      
      • 1
    • 单节点 Kubernetes 安装: 另一个选择是在 Kubernetes 集群上使用 Helm 安装 Rancher,仅在集群中使用单个节点。虽然在这种情况下的 Rancher Server 不具有高可用性,但是这种架构既节省了资源,又保留了可扩展性。如果您想在短期内通过使用单个节点来节省资源,同时又保留高可用性迁移路径,最合适的架构就是单节点 Kubernetes 安装。
      
      • 1
    • 单节点 Docker 安装: 将 Rancher 与 Docker 一起安装在单个节点上。这种安装方式的优点是开箱即用,建议在测试和演示环境中使用这种架构。它的缺点也非常明显,单节点 Docker 安装和 Kubernetes 安装之间无法迁移。如果您已经决定了要在生产环境中使用 Rancher,我们推荐您在上述的两种 Kubernetes 安装中选择一种,在生产环境中使用。
      
      • 1

    1.通过 Docker 来进行安装

    [root@k8s-master01 ~]# docker run --privileged -d --name rancher --restart=unless-stopped -p 80:80 -p 443:443 -v /opt/rancher:/var/lib/rancher rancher/rancher:v2.5.11
    [root@k8s-master01 ~]# docker ps | grep rancher
    
    • 1
    • 2

    image-20220801182055325

    参数详解
    --privileged:可以使我们启动的容器用 root 的方式启动(在 Rancher 2.5 版本以上需要加)
    
    --restart:重启策略,我们配置的是 unless-stopped,表示当容器退出时,便会重新启动容器(除非容器之前就处于停止)
    
    • 1
    • 2
    • 3

    上面docker启动我这边产生了报错,访问不到

    更换第二种方式

    docker run -d --restart=always --privileged=true -v /opt/rancher/data:/var/lib/rancher -v /opt/rancher/auditlog:/var/log/auditlog -p 8081:80 -p 8443:443 --name rancher-v2.5.3 rancher/rancher:v2.5.3
    
    • 1

    部署Rancher v2.27环境

    单节点Docker安装

    1.这里我将Rancher部署到k8s集群的其中一个node节点172.16.60.234上。

    需要提前下载rancher镜像,这里选择 "rancher/rancher:stable"版本镜像

    # 下载rancher服务镜像
    [root@k8s-node01 ~]# docker pull rancher/rancher:stable
    
    • 1
    • 2

    2.以容器方式启动Rancher服务

    # 启动rancher容器
    [root@k8s-node01 ~]# docker run -d     --restart=always --privileged=true   -v /tmp/rancher:/tmp/rancher --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:stable
     
    # 查看rancher容器
    [root@k8s-node01 ~]# docker ps|grep rancher
    2c2b36cb138b        rancher/rancher:stable                                        "entrypoint.sh"          3 hours ago         Up 3 hours          0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   lucid_robinson
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    访问地址是:https://172.16.60.234,首次访问会提示设置admin管理员密码。比如这里设置管理员密码为:admin@123456

    2.在 Rancher 的界面上绑定 K8s

    第一种方法,是创建k8s集群

    访问:https://196.196.196.11:8443

    image-20220802111900545

    image-20220802112346926

    下一步

    image-20220802112426353

    1)配置 Kubernetes 集群

    image-20220802112608637

    image-20220802112649289

    image-20220802112736333

    image-20220802112849363

    来到master节点

    image-20220802144517729

    步骤一:

    如果在创建某些资源时出现权限错误,则用户可能没有群集管理员角色。使用以下命令应用它:

    kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user [USER_ACCOUNT]
    
    • 1

    上面的用户是 default-auth,通过以下命令得出,在node上执行

    root@k8s-node1:/var/data# ps -ef|grep kubelet|grep kubeconfig
    root        539      1  1 7月27 ?       01:54:03 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.6
    root@k8s-node1:/var/data# cat /etc/kubernetes/kubelet.conf | grep user
        user: default-auth
    
    • 1
    • 2
    • 3
    • 4

    image-20220802144717899

    步骤二:

    在运行受支持的Kubernetes版本的现有Kubernetes群集上运行下面的kubectl命令,将其导入Rancher:

    kubectl apply -f https://196.196.196.11:8443/v3/import/6clzsdfnvxf7dn6g2fc7pzhjnsj9rtkwnt9rj4bqwhwj9nkj2bllpq.yaml
    
    • 1

    出现报错,不要着急

    如果您收到“由未知机构签署的证书”错误,则Rancher安装具有自签名或不受信任的SSL证书。请运行以下命令以绕过证书验证:
    image-20220802145955146

    curl --insecure -sfL https://196.196.196.11:8443/v3/import/zg8sqp4x87tjplzvg8rpb6t9wbrvgs4x72vs89pxtxq8tp5wqnncw2.yaml | kubectl apply -f -
    
    • 1

    这里遇到错报。查看我的文档,k8s解决报错文档
    image-20220802140734138

    image-20220802142053244

    image-20220802142104463

    要是我们上面的 Kubernetes 持续处于 Pending 时,我们可以
    [root@k8s-master01 ~]# kubectl get pod -n cattle-system							# 查看 Rancher 状态
    
    kubectl describe pod -n cattle-system pod名字 #查看详细信息
    
    • 1
    • 2
    • 3

    到k8s集群的master节点上查看信息。检查会发现k8s中多了一个cattle-system的命名空间:

    [root@k8s-master01 work]# kubectl get ns
    NAME              STATUS   AGE
    cattle-system     Active   18m
    default           Active   3d19h
    kube-node-lease   Active   3d19h
    kube-public       Active   3d19h
    kube-system       Active   3d19h
     
    cattle-system的命名空间下创建了cattle-cluster-agent和cattle-node-agent的pod
    [root@k8s-master01 work]# kubectl get pods -n cattle-system
    NAME                                   READY   STATUS    RESTARTS   AGE
    cattle-cluster-agent-87944bb89-9l8vn   1/1     Running   0          18m
    cattle-node-agent-24vnp                1/1     Running   0          18m
    cattle-node-agent-86hdx                1/1     Running   0          18m
    cattle-node-agent-qz59v                1/1     Running   0          18m
     
    [root@k8s-master01 work]# kubectl get deployment -n cattle-system
    NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
    cattle-cluster-agent   1/1     1            1           19m
     
    [root@k8s-master01 work]# kubectl get daemonset -n cattle-system
    NAME                DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    cattle-node-agent   3         3         3       3            3           <none>          19m
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    image-20220803110926134

    image-20220802142339088

    image-20220802142349779

    image-20220802142406415

    image-20220803111253103

    三、在 Rancher 上部署应用

    1)创建应用

    image-20220803172826833

    选择副本

    image-20220803172854081

    创建pod配置选择

    image-20220803173335549

    创建

    image-20220803174016716

    端口设置

    image-20220803180426637

    等待一会查看

    image-20220803174352445

    验证访问

    image-20220803180323754

    查看 Pod 日志

    image-20220803180607271

    image-20220803180621433

    命令行查看
    root@k8s-master:~# kubectl get namespace
    NAME                          STATUS        AGE
    cattle-fleet-system           Active        6h56m
    cattle-impersonation-system   Active        7h
    cattle-system                 Active        7h2m
    default                       Active        15d
    elk                           Active        3d1h
    elk1                          Active        3d
    kube-node-lease               Active        15d
    kube-public                   Active        15d
    kube-system                   Active        15d
    local                         Active        6h56m
    monitoring                    Terminating   3d21h
    root@k8s-master:~# kubectl get pods -n default
    NAME                     READY   STATUS        RESTARTS   AGE
    nginx-5fc57795c6-74gcw   1/1     Terminating   0          23m
    nginx-7ccd58f54-tvzv8    1/1     Running       0          3m34s
    root@k8s-master:~# kubectl get pods -n default -o wide
    NAME                     READY   STATUS        RESTARTS   AGE     IP            NODE        NOMINATED NODE   READINESS GATES
    nginx-5fc57795c6-74gcw   1/1     Terminating   0          23m     10.244.1.55   k8s-node2   <none>           <none>
    nginx-7ccd58f54-tvzv8    1/1     Running       0          3m45s   10.244.1.58   k8s-node2   <none>           <none>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    image-20220803180705005

    四、通过Rancher界面管理k8s集群

    image-20220803112040738

    击上图右上角的"执行kubelet命令行",就可以在webshell里面通过kubelet命令查看集群信息了

    image-20220803112220569

    可以通过查看导入的k8s集群的项目里的资源,来查看每个service下的pod情况

    image-20220803112838445

    动态伸缩 pod副本

    image-20220803180920092

    登录pod容器内部

    image-20220803181143304

    pod重新部署

    image-20220803181221790

    Rancher还有很多管理k8s集群的其他操作功能,在这里就不一一介绍了。

    五、删除已导入的k8s集群,重新导入

    1.从Rancher界面直接删除已导入的集群

    image-20220803181447360

    2.删除已经导入的 “API&Keys” 信息

    image-20220803181523703

    删除上面创建的步骤
    # 删除上面截图中第一步骤中添加的权限(在k8s集群的master节点操作)
    [root@k8s-master01 work]# kubectl delete clusterrolebinding cluster-admin-binding
    # 删除上面截图中第三步骤中添加的cattle-cluster-agent和cattle-node-agent的pod
    [root@k8s-master01 work]# kubectl delete deployment cattle-cluster-agent -n cattle-system
    [root@k8s-master01 work]# kubectl delete daemonset cattle-node-agent -n cattle-system
    
    # 或者将上面截图中第三步骤的yaml文件地址里的内容粘贴到k8s的master节点的一个yaml文件,比如 rancher_imoprt.yml,
    # 直接针对这个yml文件执行 kubectl delete -f rancher_imoprt.yml 操作即可删除
    [root@k8s-master01 work]# kubectl delete -f rancher_imoprt.yml
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    oot@k8s-master01 work]# kubectl delete deployment cattle-cluster-agent -n cattle-system
    [root@k8s-master01 work]# kubectl delete daemonset cattle-node-agent -n cattle-system

    或者将上面截图中第三步骤的yaml文件地址里的内容粘贴到k8s的master节点的一个yaml文件,比如 rancher_imoprt.yml,

    直接针对这个yml文件执行 kubectl delete -f rancher_imoprt.yml 操作即可删除

    [root@k8s-master01 work]# kubectl delete -f rancher_imoprt.yml

    
    
    • 1
  • 相关阅读:
    Arduino框架下合宙ESP32C3 +1.8“tft 网络时钟
    Python----函数中的说明文档
    设计模式之中介者模式
    Ansible如何使用lookup插件模板化外部数据
    SkyWalking快速上手(三)——架构剖析2
    常用的神经网络控制结构,神经网络控制应用实例
    每日刷题打卡Day12
    自动化选课(Python + selenium
    两个线程交替打印A1B2C3D4E5输出,6种实现方式
    019-JAVA访问权限、封装详细讲解
  • 原文地址:https://blog.csdn.net/tianmingqing0806/article/details/126146464