Kubernetes as 容器编排平台现在是非常热门的话题。在这篇文章中,我试图按照Rancher和K3S指南进行集成。 
  • Rancher是用于管理和安装Kubernetes集群的出色GUI。它解决了在任何基础架构上管理多个Kubernetes集群的运营和安全挑战,同时为DevOps团队提供了用于运行容器化工作负载的集成工具。
  • K3s被设计为小于40MB的单个二进制文件,它完全实现了Kubernetes API。为了实现这一目标,他们删除了很多不必要的驱动程序,这些驱动程序不需要成为核心的一部分,可以轻松地用附加组件替换。

这比我之前安装和集成它们要容易得多。一个命令用于Rancher,另一个命令用于K3S,然后修改k3s服务文件以将容器引擎从容器化更改为docker。之后,另一个命令将K3S导入Rancher。而已。

图表


安装Docker环境

尽管K3S默认情况下集成了Containerd,但出于多种原因,为了方便后续部署,我们在这里将Docker替换为Containerd。

curl -fsSL get.docker.com | sh

安装Rancher服务器


Rancher Server的名称听起来像它必须安装很多东西,但事实并非如此。 Rancher Server实际上只是一个Docker映像,整个Rancher程序是使用Docker打包的。 因此配置相对简单,只需要一个命令:
docker run -d -v /data/docker/rancher-server/var/lib/rancher/:/var/lib/rancher/ --restart=unless-stopped --name rancher-server -p 80:80 -p 443:443 rancher/rancher:stable
等一下 然后访问您的服务器IP,以进入Rancher Server的第一个配置界面。

添加集群

导入现有集群

复制第三个脚本以用于下一步将群集导入Rancher。

安装K3S集群

让我们开始部署K3S集群。
官方网站k3s.io提供了一个非常有用的单命令安装脚本,我们只需要使用单命令脚本即可完成K3S环境的安装:
curl -sfL //get.k3s.io | sh -
安装完成后,我们需要调整K3S服务配置文件以禁用traefik。 
注意: 特拉菲克 是现代的HTTP反向代理和负载平衡器,用于轻松部署微服务。在设计,部署和运行应用程序时,它简化了网络复杂性。 启动服务器时,默认情况下会部署Traefik。
修改K3S服务的配置文件:
vim /etc/systemd/system/multi-user.target.wants/k3s.service
该文件的内容如下:
[Unit]
Description=Lightweight Kubernetes
Documentation=//k3s.io
After=network-online.target

[Service]
Type=notify
EnvironmentFile=/etc/systemd/system/k3s.service.env执行启动Pre=-/sbin/modprobe br_netfilter执行启动Pre=-/sbin/modprobe overlay
执行启动=/usr/local/bin/k3s server
在这里我们需要修改 的价值 执行启动 and modify it to:
/usr/local/bin/k3s server --docker --no-deploy traefik
保存并退出后,执行命令以重新加载新的服务配置文件:
systemctl daemon-reload
完成后重新启动K3S服务:
service k3s restart
等待数十秒钟,然后通过以下命令确认K3S集群是否已准备就绪:
k3s kubectl get node
您将得到类似于以下结果:

[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主节点上(通常,第一个节点是主控制器,也称为服务器节点),执行以下命令来导入集群:
curl --insecure -sfL //52.152.236.147/v3/import/jr42wvdhk4w94htxxtf5hv424rsjjz6hzq9vl2lj8q9dnb8dgcwgzn.yaml | kubectl apply -f -
注意:每个集群的导入命令都不同,请不要直接在教程中复制导入命令!
此后,将在命令行管理程序中返回以下信息,表明集群导入配置成功:
[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

通过 网络安全

发表评论