Kubernetes作为Container Orchestration平台现在非常热门。在这篇文章中,我试图遵循牧场主和K3S指南来整合它们。 
  • 牧场主是一个非常棒的GUI,用于管理和安装Kubernetes集群。它涉及在任何基础架构中管理多个Kubernetes集群的操作和安全挑战,同时为Devops团队提供用于运行集装箱工作负载的集成工具。
  • K3S被设计为单个二进制二进制小于40MB,完全实现Kubernetes API。为了实现这一目标,他们删除了很多不需要成为核心的额外驱动程序,并且很容易用附加组件替换。

在安装两者和整合它们之前,它比我想象的更容易。 rancher的一个命令和K3s的一个命令,然后修改K3S服务文件以将容器引擎更改为Docker。之后,另一个命令将k3s导入牧场主。就是这样。


安装Docker环境

虽然K3S默认集成了ContainerD,但由于许多原因,为了方便后续部署,我们将在此处替换Docker的ContainTD。

curl -fsSL get.docker.com | sh

安装rancher服务器


rancher服务器的名称听起来它必须安装很多东西,但它不是。 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服务器的第一个配置界面。

添加群集

导入现有群集

复制第三个脚本,以获取下一步以将群集导入rancher。

安装K3S集群

让我们开始部署K3S群集。
官方网站K3S.IO提供了一个非常有用的单个命令安装脚本,我们只需要使用One-Command脚本来完成K3S环境的安装:
curl -sfL //get.k3s.io | sh -
安装完成后,我们需要调整K3S服务配置文件以禁用Traefik。 
笔记: 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.envexecstart.Pre=-/sbin/modprobe br_netfilterexecstart.Pre=-/sbin/modprobe overlay
execstart.=/usr/local/bin/k3s server
在这里,我们需要修改 的价值 execstart. 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服务器和K3s群集之间建立连接。
在K3S主节点上(一般来说,第一个节点是主控制器,也称为服务器节点),请执行导入群集的命令:
curl --insecure -sfL //52.152.236.147/v3/import/jr42wvdhk4w94htxxtf5hv424rsjjz6hzq9vl2lj8q9dnb8dgcwgzn.yaml | kubectl apply -f -
注意:每个群集的导入命令都不同,请不要直接在教程中复制导入命令!
之后,将在shell中返回以下信息,指示群集导入配置成功:
[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]:~#



回到牧场主接口并等待几十秒,我们会发现 待办的 国家已经改变为 等待 state:

此状态显示牧场主已从K3S收到注册请求,并完成K3S集群的注册。等待几秒钟才能完成K3S群集的导入,并且状态将变为活动状态:

此时,我们已成功完成rancher 2.x和k3s之间的连接,并且可以像K8S群集一样操作K3S群集。

YouTube视频:

参考

来自Blogger. http://blog.fabiandinkins.com/2020/07/lightweight-k8s-lab-rancher-22-k3s.html

经过 Netsec.

发表评论