目录
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 是基于嵌入式 Kubernetes API Server 和 ETCD 数据库建立的,它提供了以下功能:
我们需要事先安装好Kubernetes集群,如果还没搭建k8s集群的话,可以参考前面使用kubeadm搭建k8s集群的文章:
这里我们选择在master节点上(10.0.91.200)安装Rancher:
$ 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
我们看到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)执行。
[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提供给我们的仪表盘,可以监控集群的一些资源使用情况。
点击Create创建工作负载,根据需要填写具体的信息:
点击Create创建Deployment。稍等一会后,可以看到,nginx这个工作负载状态已经变成Active了,并且也成功创建了两个nginx的副本。
验证nginx是否正常访问,因为我们使用的NodePort方式暴露nginx服务,所以我们可以使用集群中任何一台节点的【IP地址:30090】访问到nginx。
可以看到,成功访问到nginx,以上就是通过Rancher整合自定义的k8s集群,实现通过界面管理k8s集群,方便了许多。
更多关于Rancher的使用,请参照Rancher官方文档:Rancher文档 | K8S文档 | Rancher | Rancher文档