Rainbond与Kubernetes集群的关系

Kubernetes是Rainbond调度和运行应用的基础平台,5.0版本开始Rainbond与Kubernetes进行了完全的解耦合以支持更多的Kubernetes版本。

Kubernetes集群要求

  • Kubernetes版本必须 >=1.10
  • Kubernetes集群必须正常工作
  • Kube-APIServer 开启了RBAC,支持ServiceAccount、NamespaceLifecycle、LimitRanger

Rainbond将对Kubernetes集群做的修改

  • 创建多个Namespace(每个租户创建一个Namespace)
  • 创建名为rainbondssscrainbondslsc 的StorageClass
  • 应用创建后创建在所在租户空间内创建各类资源

注意:

由Rainbond创建的资源都携带Creater=Rainbond 标签,由Rainbond自动管理,你在未完全了解Rainbond工作机制的情况下请勿自行操作Kubernetes资源。

安装Rainbond

1. 准备Rainbond需要的Kubernetes的相关文件

admin.kubeconfig,Kube-Apiserver admin用户权限的配置文件kube-proxy.kubeconfig,用于Slave节点Kube-Proxy的配置文件,一般用户名为kube-proxy

需要将这个文件拷贝到/opt/rainbond/etc/kubernetes/kubecfg目录下

  1. # 查看是否复制成功
  2. ls /opt/rainbond/etc/kubernetes/kubecfg
  3. admin.kubeconfig kube-proxy.kubeconfig
  • 通过kubeadm安装的k8s集群相关文件获取方式
    admin.kubeconfig文件,在master节点获取/etc/kubernetes/admin.conf或者$HOME/.kube/configkube-proxy.kubeconfig文件,示例如下
  1. # kube-proxy.kubeconfig
  2. apiVersion: v1
  3. kind: Config
  4. clusters:
  5. - cluster:
  6. certificate-authority: <base64 ca.crt证书内容>
  7. server: <kube api https地址>
  8. name: default
  9. contexts:
  10. - context:
  11. cluster: default
  12. namespace: default
  13. user: default
  14. name: default
  15. current-context: default
  16. users:
  17. - name: default
  18. user:
  19. token: <token>
  20. # ca.crt 文件:/etc/kubernetes/pki/ca.crt
  21. # token 获取方式
  22. kubectl -n kube-system get secret | grep kube-proxy | awk '{print "secret/"$1}' | xargs kubectl describe -n kube-system | grep token: | awk -F: '{print $2}' | xargs echo
  • 其他途径安装部署的k8s集群配置文件获取
    根据具体情况,自行生成相关文件,具体可以参考 创建 kubeconfig 文件一文。

2. 调整集群所有节点的Docker配置(必要)

  • 信任goodrain.me镜像仓库(必要) Insecure Registries必须配置,否则会影响后续的一系列使用.确定配置是否生效docker info查看Insecure Registries是否包含goodrain.me

  • 配置日志驱动设置(可选)

Rainbond将实时通过Docker Daemon 获取容器日志,需要Docker配置为json-file驱动。若你已采用其他驱动,Rainbond可能无法正常获取服务日志。

参考daemon.json配置文件

  1. # /etc/docker/daemon.json
  2. {
  3. "insecure-registries": ["goodrain.me"],
  4. "max-concurrent-downloads": 10,
  5. "log-level": "warn",
  6. "log-driver": "json-file",
  7. "log-opts": {
  8. "max-size": "20m",
  9. "max-file": "2"
  10. }
  11. }

3. 初始化Rainbond数据中心

在k8s管理节点执行安装,进行初始化Rainbond数据中心,安装Rainbond管理节点服务,如果有外网ip,则需要指定外网ip

  1. wget https://pkg.rainbond.com/releases/common/v5.0/grctl
  2. chmod +x ./grctl
  3. ./grctl init --iip <必须指定内网ip> --eip <可选外网ip> --deploy-type thirdparty

4. 将已有k8s节点纳入rainbond管理

下述安装操作前请务必执行信任goodrain.me镜像仓库步骤,否则会影响安装

  1. # worker节点NAME,通过如下命令获取
  2. kubectl get node -o wide
  3. # 添加已有k8s worker计算节点
  4. grctl node add --host <worker节点hostname> --iip <worker内网ip> --key /root/.ssh/id_rsa.pub --role compute --id <worker节点NAME>
  5. grctl node install <worker节点NAME>
  6. # 添加已有k8s master管理节点
  7. grctl node add --host <master节点hostname> --iip <worker内网ip> --key /root/.ssh/id_rsa.pub --role manage --id <master节点NAME>
  8. grctl node install <master节点NAME>

示例

  1. root@iZj6caqbup3uo1me2vt0qqZ:~# kubectl get node -o wide
  2. NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
  3. izj6caqbup3uo1me2vt0qrz Ready <none> 117m v1.13.1 10.10.10.230 <none> Debian GNU/Linux 9 (stretch) 4.9.0-8-amd64 docker://17.3.3
  4. grctl node add --host izj6caqbup3uo1me2vt0qrz --iip 10.10.10.230 --key /root/.ssh/id_rsa.pub --role compute --id izj6caqbup3uo1me2vt0qrz
  5. grctl node install izj6caqbup3uo1me2vt0qrz

5. 其他说明

默认情况下,rainbond默认会将节点纳入到管理中,可手动关闭当前节点自动禁止调度功能。

  1. # 修改 /opt/rainbond/scripts/start-node.sh 调整auto-scheduler为false即可禁用
  2. systemctl restart node

原文: https://www.rainbond.com/docs/stable/operation-manual/install/kubernetes/install-base-kubernetes.html