Kubernetes as 容器编排平台现在是非常热门的话题。在这篇文章中,我试图按照Rancher和K3S指南进行集成。
- Rancher是用于管理和安装Kubernetes集群的出色GUI。它解决了在任何基础架构上管理多个Kubernetes集群的运营和安全挑战,同时为DevOps团队提供了用于运行容器化工作负载的集成工具。
- K3s被设计为小于40MB的单个二进制文件,它完全实现了Kubernetes API。为了实现这一目标,他们删除了很多不必要的驱动程序,这些驱动程序不需要成为核心的一部分,可以轻松地用附加组件替换。
这比我之前安装和集成它们要容易得多。一个命令用于Rancher,另一个命令用于K3S,然后修改k3s服务文件以将容器引擎从容器化更改为docker。之后,另一个命令将K3S导入Rancher。而已。
图表
安装Docker环境
尽管K3S默认情况下集成了Containerd,但出于多种原因,为了方便后续部署,我们在这里将Docker替换为Containerd。
安装Rancher服务器
Rancher Server的名称听起来像它必须安装很多东西,但事实并非如此。 Rancher Server实际上只是一个Docker映像,整个Rancher程序是使用Docker打包的。 因此配置相对简单,只需要一个命令:
等一下 然后访问您的服务器IP,以进入Rancher Server的第一个配置界面。
添加集群
导入现有集群
复制第三个脚本以用于下一步将群集导入Rancher。
安装K3S集群
让我们开始部署K3S集群。
官方网站k3s.io提供了一个非常有用的单命令安装脚本,我们只需要使用单命令脚本即可完成K3S环境的安装:
安装完成后,我们需要调整K3S服务配置文件以禁用traefik。
注意: 特拉菲克 是现代的HTTP反向代理和负载平衡器,用于轻松部署微服务。在设计,部署和运行应用程序时,它简化了网络复杂性。 启动服务器时,默认情况下会部署Traefik。
注意: 特拉菲克 是现代的HTTP反向代理和负载平衡器,用于轻松部署微服务。在设计,部署和运行应用程序时,它简化了网络复杂性。 启动服务器时,默认情况下会部署Traefik。
修改K3S服务的配置文件:
该文件的内容如下:
在这里我们需要修改 的价值 执行启动 and modify it to:
保存并退出后,执行命令以重新加载新的服务配置文件:
完成后重新启动K3S服务:
等待数十秒钟,然后通过以下命令确认K3S集群是否已准备就绪:
您将得到类似于以下结果:
[email protected]:~# vim /etc/systemd/system/multi-user.target.wants/k3s.service
[email protected]:~# systemctl daemon-reload
[email protected]:~# service k3s restart
[email protected]:~# k3s kubectl get node
NAME STATUS ROLES AGE VERSION
k3s-1 Ready master 58s v1.18.6+k3s1
[email protected]:~#
将K3S集群导入Rancher
在当前的Rancher Server上,群集状态显示为Pending,如下所示:
这是因为我们尚未导入集群。在此步骤中,我们将导入集群并在Rancher Server和K3S集群之间建立连接。
在K3S主节点上(通常,第一个节点是主控制器,也称为服务器节点),执行以下命令来导入集群:
注意:每个集群的导入命令都不同,请不要直接在教程中复制导入命令!
此后,将在命令行管理程序中返回以下信息,表明集群导入配置成功:
[email protected]:~# curl --insecure -sfL //52.152.236.147/v3/import/6tx4vblm9464jc4wnvj5kx87qsxxkqxcrmn575msq55j6j2bvdzcvk.yaml | kubectl apply -f -
error: no objects passed to apply
[email protected]:~# curl --insecure -sfL //52.152.236.147/v3/import/6tx4vblm9464jc4wnvj5kx87qsxxkqxcrmn575msq55j6j2bvdzcvk.yaml
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: proxy-clusterrole-kubeapiserver
rules:
- apiGroups: [""]
resources:
- nodes/metrics
- nodes/proxy
- nodes/stats
- nodes/log
- nodes/spec
...(Omitted)...
- name: k8s-ssl
hostPath:
path: /etc/kubernetes
type: DirectoryOrCreate
- name: var-run
hostPath:
path: /var/run
type: DirectoryOrCreate
- name: run
hostPath:
path: /run
type: DirectoryOrCreate
- name: cattle-credentials
secret:
secretName: cattle-credentials-26fff6d
defaultMode: 320
- hostPath:
path: /etc/docker/certs.d
type: DirectoryOrCreate
name: docker-certs
updateStrategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
[email protected]:~# curl --insecure -sfL //52.152.236.147/v3/import/6tx4vblm9464jc4wnvj5kx87qsxxkqxcrmn575msq55j6j2bvdzcvk.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-26fff6d created
clusterrole.rbac.authorization.k8s.io/cattle-admin created
deployment.apps/cattle-cluster-agent created
daemonset.apps/cattle-node-agent created
[email protected]:~#
返回Rancher界面,等待数十秒钟,我们会发现 待定 状态已更改为 等候 state:
此状态表明Rancher已从K3S接收到注册请求,并且正在完成K3S集群的注册。等待几秒钟以完成K3S集群的导入,状态将变为活动:
至此,我们已成功完成Rancher 2.x与K3S之间的连接,并且可以像K8S集群一样操作K3S集群。
YouTube视频:
参考文献
来自Blogger //blog.fabiandinkins.com/2020/07/lightweight-k8s-lab-rancher-22-k3s.html