Rancher介绍
Rancher 是为使用容器的公司打造的容器管理平台。Rancher 简化了使用 Kubernetes 的流程,开发者可以随处运行 Kubernetes(Run Kubernetes Everywhere),满足 IT 需求规范,赋能 DevOps 团队。
Rancher 1.x 最初是为了支持多种容器编排引擎而构建的,其中包括 Rancher 自己的容器编排引擎 Cattle。但随着 Kubernetes 在市场上的兴起,Rancher 2.x 已经完全转向了 Kubernetes。Rancher 2.x 可以部署和管理在任何地方运行的 Kubernetes 集群。
说明:下文中所有的“Rancher”代指的都是 Rancher 2.x。
Rancher 可以创建来自 Kubernetes 托管服务提供商的集群,自动创建节点并安装 Kubernetes 集群,或者导入任何已经存在的 Kubernetes 集群。
Rancher 通过支持集群的身份验证和基于角色的访问控制(RBAC),使系统管理员能够从一个位置控制全部集群的访问。Rancher 可以对集群及其资源进行详细的监控和并在需要时发送告警,也可以将容器日志发送给外部日志系统,并通过应用商店与 Helm 集成。如果您具有外部 CI/CD 流水线系统,则可以将其与 Rancher 对接,如果没有,Rancher 也提供了简单易用的流水线来帮助您自动部署和升级工作负载。除此之外,Rancher 还有很多开箱即用的功能来帮助您更好的管理集群和业务应用,例如多集群应用,全局 DNS,服务网格,安全扫描,集群模版和基于 OPA 的策略管理等功能。
总而言之,Rancher 是一个全栈式的 Kubernetes 容器管理平台,也是一个可以在任何地方都能成功运行 Kubernetes 的工具。
我的rancher演示地址: https://rancher.frps.cn
安装
为Rancher创建持久化目录
[root@ops ~]# mkdir /data/rancher
安装docker
yum install -y yum-utils
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemctl start docker
启动rancher容器
docker run -d --restart=unless-stopped \
-p 80:80 -p 443:443 \
--privileged \
-v /data/rancher:/var/lib/rancher/ \
rancher/rancher:latest
#端口使用80和443
检查容器运行状态
[root@ops ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f1a12dbb8a8d rancher/rancher:latest "entrypoint.sh" 16 seconds ago Up 14 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp lucid_shirley
由于我个人是想外网访问rancher,我这边使用frp进行端口映射
frpc添加下面一行
[rancher-ops]
type = tcp
local_ip = 192.168.31.101
local_port = 443
remote_port = 1443
重启frpc
外网访问rancher
使用IP+端口访问会影响效率,接下来配置nginx,使用域名访问
nginx upsteam需要添加ws支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
upstream 需要配置https,rancher默认强制https
设置完upstream之后,我们访问测试
根据提示,我们去docker容器中获取密码
docker logs container-id 2>&1 | grep "Bootstrap Password:"
#这里的containerd ID为docker ps获取的ID
设置固定密码
这里可以设置为外网访问域名,在后面k8s添加时采用内网ip的方式,减少frp tcp连接数 -->2022年11月26日05:03:20 新增说明
登陆成功后会默认给我们安装k3s
接下来我们使用rancher获取目前的集群
给rancher集群设置一个名称
配置rancher连接k8s集群
我这边rancher已经映射公网了,所以我使用公网apply或者curl都可以
我这里建议使用curl,没有整数使用curl比较合适
curl --insecure -sfL https://192.168.31.101/v3/import/zxfqmh2vzld57cfl6pl7lp49xn9bxlkvhfwckpgx2n9d7dcdzpqszs_c-m-4vv2sd7j.yaml | kubectl apply -f -
#添加集群的时候不要写nginx地址,最好直接写容器rancher的地址,避免证书问题
检查pod运行状态
[root@k8s-01 ~]# kubectl get pod -n cattle-system
NAME READY STATUS RESTARTS AGE
cattle-cluster-agent-5bdc9696b-5v457 1/1 Running 0 2m8s
cattle-cluster-agent-5bdc9696b-nzh4q 1/1 Running 0 4m3s
检查rancher状态
在Rancher中已经可以看到容器状态
Pod日志也可以正常查看到