页面化管理 K8s 平台

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

image-20220801175629410

Rancher 使用介绍

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

1.Rancher API Server 的功能

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

授权和角色权限控制
**用户管理:** Rancher API Server 除了管理用户在公司内部使用的认证信息之外,还可以管理用户访问外部服务所需的认证信息。
**授权:** Rancher API Serrver 可以管理权限控制策略和安全策略。
使用 Kubernetes 的功能
1-运行 Kubernetes 集群: Rancher API Server 不仅可以在已经存在的节点上运行 K8s 集群,还可以对 K8s 集群进行版本升级。

2-应用商店管理: Rancher 可以使用 Helm Charts 应用商店重复部署应用。

3-项目管理: 项目是由一个 K8s 集群内的多个命名空间和多个访问控制策略组成,允许用户以组为单位,管理多个命名空间。

4-流水线: Rancher 支持对每一个项目单独配置流水线。
查看集群信息
1-日志: Rancher 可以和多种主流日志工具集成(如:ELK)

2-监控: 使用 Rancher,我们可以通过 Prometheus 监控集群节点、Kubernetes 组件、软件部署的状态和进度。

3-告警信息: 当我们 K8s 集群内出现问题时,Rancher 会在界面上进行提示。

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

在这里插入图片描述

Rancher 提供的功能:
1-支持 K8s 集群的身份验证和基于角色的访问控制(RBAC),使管理员可以全方面的控制所有集群的访问。

2-支持 K8s 资源监控,并在需要时发送告警,同时可以将容器内的日志发送给外部日志系统,还可以通过应用商店与 Helm 集成。

3-支持与外部的 CI/CD 流水线系统进行对接,同时 Rancher 本身也提供了简单易用的流水线来帮忙我们自动部署和升级工作负载。

二、Rancher 安装

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

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

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

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

image-20220801182055325

参数详解
--privileged:可以使我们启动的容器用 root 的方式启动(在 Rancher 2.5 版本以上需要加)

--restart:重启策略,我们配置的是 unless-stopped,表示当容器退出时,便会重新启动容器(除非容器之前就处于停止)

上面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

部署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

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

访问地址是: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]

上面的用户是 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

image-20220802144717899

步骤二:

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

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

出现报错,不要着急

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

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

这里遇到错报。查看我的文档,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名字 #查看详细信息

到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

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>

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

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


Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐