22、Kubernetes核心技术 - 整合Rancher通过界面管理k8s集群

目录

一、概述

[二、Rancher API Server 的功能](#二、Rancher API Server 的功能)

2.1、授权和角色权限控制

[2.2、使用 Kubernetes 的功能](#2.2、使用 Kubernetes 的功能)

2.3、配置云端基础信息

2.4、查看集群信息

[三、Rancher 安装](#三、Rancher 安装)

3.1、前置环境

[3.2、通过 Docker 来进行安装Rancher](#3.2、通过 Docker 来进行安装Rancher)

[3.3、在 Rancher 的界面上绑定k8s集群](#3.3、在 Rancher 的界面上绑定k8s集群)

[3.4、在 Rancher 上部署应用](#3.4、在 Rancher 上部署应用)


一、概述

Rancher 是为使用容器的公司打造的容器管理平台。Rancher 简化了使用 Kubernetes 的流程,开发者可以随处运行 Kubernetes(Run Kubernetes Everywhere),满足 IT 需求规范,赋能 DevOps 团队。

Rancher 可以创建来自 Kubernetes 托管服务提供商的集群,自动创建节点并安装 Kubernetes 集群,或者导入任何已经存在的 Kubernetes 集群。

Rancher 通过支持集群的身份验证和基于角色的访问控制(RBAC),使系统管理员能够从一个位置控制全部集群的访问。Rancher 可以对集群及其资源进行详细的监控和并在需要时发送告警,也可以将容器日志发送给外部日志系统,并通过应用商店与 Helm 集成。如果您具有外部 CI/CD 流水线系统,则可以将其与 Rancher 对接,如果没有,Rancher 也提供了简单易用的流水线来帮助您自动部署和升级工作负载。除此之外,Rancher 还有很多开箱即用的功能来帮助您更好的管理集群和业务应用,例如多集群应用,全局 DNS,服务网格,安全扫描,集群模版和基于 OPA 的策略管理等功能。

总而言之,Rancher 是一个全栈式的 Kubernetes 容器管理平台,也是一个可以在任何地方都能成功运行 Kubernetes 的工具。

二、Rancher API Server 的功能

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

2.1、授权和角色权限控制

  • 用户管理: Rancher API server 除了管理用户在公司内部的使用的认证信息之外,还管理用户访问外部服务所需的认证信息,如登录活动目录或 GitHub 所需的账号密码。
  • 授权: Rancher API server 负责管理权限控制策略 和 安全策略。

2.2、使用 Kubernetes 的功能

  • 运行 Kubernetes 集群: Rancher API server 可以在已有节点上运行 Kubernetes 集群 ,或对 Kubernetes 进行版本升级。
  • 应用商店管理: Rancher 可以使用Helm Charts 应用商店重复部署应用。
  • 项目管理: 项目,是 Rancher 中的一个概念,Kubernetes 中并没有这个概念。项目由一个集群内的多个命名空间和多个访问控制策略组成,允许用户以组为单位,一次管理多个命名空间,对其进行 Kubernetes 相关操作。Rancher 用户界面提供了 项目管理 和 项目内应用管理 两个功能。
  • 流水线: 流水线 可以帮助开发者快速高效地上线新软件。Rancher 支持给每一个项目单独配置流水线。
  • Istio: Rancher 与 Istio 集成,管理员或集群所有者可以将 Istio 交给开发者,然后开发者使用 Istio 执行安全策略,排查问题,或为快速发布、灰度发布和 A/B 测试进行流量控制。

2.3、配置云端基础信息

  • 同步节点信息: Rancher API server 可以同步集群内所有节点的信息。
  • 配置云端基础信息: 当 Rancher 与云服务提供商配置完了之后,可以在云端动态配置新节点和持久化存储。

2.4、查看集群信息

  • 日志: Rancher 可以跟多种主流日志工具集成,您可以设置 Rancher 日志。
  • 监控: 使用 Rancher,您可以通过 Prometheus 监控集群节点、Kubernetes 组件、软件部署的状态和进度。您可以设置 集群监控 或 项目监控。
  • 告警信息: 您需要随时知道集群和项目的计划和非计划事件,才可以提高公司的运行效率。

三、Rancher 安装

3.1、前置环境

我们需要事先安装好Kubernetes集群,如果还没搭建k8s集群的话,可以参考前面使用kubeadm搭建k8s集群的文章:

3.2、通过 Docker 来进行安装Rancher

这里我们选择在master节点上(10.0.91.200)安装Rancher:

bash 复制代码
$ 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
Unable to find image 'rancher/rancher:v2.5.11' locally
v2.5.11: Pulling from rancher/rancher
284055322776: Pull complete 
19763da17d52: Pull complete 
dcba38686409: Pull complete 
e29446e69556: Pull complete 
e0edee3cdc12: Pull complete 
6daa78a2ec74: Pull complete 
e3a3c6bc780d: Pull complete 
6c4f773f88b6: Pull complete 
c5e890fd9374: Pull complete 
85ceb4a5a420: Pull complete 
dfecfc72402d: Pull complete 
c772cfbd0e5b: Pull complete 
8c4865378f10: Pull complete 
71cc47c5d0b5: Pull complete 
457a5bbc46e0: Pull complete 
01ed63f2c8ee: Pull complete 
a7a970f5b9d3: Pull complete 
Digest: sha256:e924341c2c1a60d3551729f87a7ba43b015e3c6bf11d1e41d1517dac2f76fc94
Status: Downloaded newer image for rancher/rancher:v2.5.11
a8c61b91aa1236e20910aa3530d0a3486658804d4c2337f70434e2a306ee9c5f

$ docker ps | grep rancher
a8c61b91aa12   rancher/rancher:v2.5.11                               "entrypoint.sh"          About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   rancher
  • --privileged:可以使我们启动的容器用 root 的方式启动(在 Rancher 2.5 版本以上需要加)
  • --restart:重启策略,我们配置的是 unless-stopped,表示当容器退出时,便会重新启动容器(除非容器之前就处于停止)

3.3、在 Rancher 的界面上绑定k8s集群

我们看到rancher的容器已经运行成功,接着我们在浏览器访问:https://10.0.91.200

Rancher的默认用户名是admin,我们首先需要为admin设置密码。

点击Continue,进入Rancher启动页:

接下来需要配置 Kubernetes 集群:

点击Add Cluster,

这里我们选择Other Cluster类型:

点击Create创建k8s集群。

这里有三种方式,因为我们使用的是自定义的k8s集群,所以使用第三种方式,将上述红框内的命令,复制到k8s集群中master节点上(10.0.91.200)执行。

bash 复制代码
[root@master ~]# curl --insecure -sfL https://10.0.91.200/v3/import/l5r9r2pztdqfmdqgmgrdxbl9w7htwslxxmk5vqz8j9fzqq69nw6ddr_c-ntshf.yaml | kubectl apply -f -
clusterrole.rbac.authorization.k8s.io/proxy-clusterrole-kubeapiserver created
clusterrolebinding.rbac.authorization.k8s.io/proxy-role-binding-kubernetes-master created
namespace/cattle-system created
serviceaccount/cattle created
clusterrolebinding.rbac.authorization.k8s.io/cattle-admin-binding created
secret/cattle-credentials-f206fee created
clusterrole.rbac.authorization.k8s.io/cattle-admin created
deployment.apps/cattle-cluster-agent created

[root@master ~]# kubectl get pod -n cattle-system
NAME                                    READY   STATUS    RESTARTS   AGE
cattle-cluster-agent-665b5f4b99-8xdvg   1/1     Running   0          2m27s

执行完之后,可以看到,它创建了一些集群角色、命令空间、Secret、Deployment等对象。

我们再次回到Rancher集群页面,可以看到,kubernetes这个集群已经成功创建出来了,并且状态也是Active。

点击Explorer,这是Rancher提供给我们的仪表盘,可以监控集群的一些资源使用情况。

3.4、在 Rancher 上部署应用

点击Create创建工作负载,根据需要填写具体的信息:

点击Create创建Deployment。稍等一会后,可以看到,nginx这个工作负载状态已经变成Active了,并且也成功创建了两个nginx的副本。

验证nginx是否正常访问,因为我们使用的NodePort方式暴露nginx服务,所以我们可以使用集群中任何一台节点的【IP地址:30090】访问到nginx。

可以看到,成功访问到nginx,以上就是通过Rancher整合自定义的k8s集群,实现通过界面管理k8s集群,方便了许多。

更多关于Rancher的使用,请参照Rancher官方文档:Rancher文档 | K8S文档 | Rancher | Rancher文档

相关推荐
aherhuo4 小时前
kubevirt网络
linux·云原生·容器·kubernetes
陌北v14 小时前
Docker Compose 配置指南
运维·docker·容器·docker-compose
catoop5 小时前
K8s 无头服务(Headless Service)
云原生·容器·kubernetes
阿里嘎多学长5 小时前
docker怎么部署高斯数据库
运维·数据库·docker·容器
liuxuzxx6 小时前
1.24.1-Istio安装
kubernetes·istio·service mesh
G_whang7 小时前
windos 安装docker
运维·docker·容器
道一云黑板报7 小时前
Flink集群批作业实践:七析BI批作业执行
大数据·分布式·数据分析·flink·kubernetes
运维小文7 小时前
K8S中的PV、PVC介绍和使用
docker·云原生·容器·kubernetes·存储
ζั͡山 ั͡有扶苏 ั͡✾8 小时前
Kubeadm+Containerd部署k8s(v1.28.2)集群(非高可用版)
云原生·容器·kubernetes
Hadoop_Liang8 小时前
Kubernetes ConfigMap的创建与使用
云原生·容器·kubernetes