集群导入

基本信息

  • 支持导入非 KubeOperator 创建的集群
  • 导入非 KubeOperator 创建的集群不支持扩缩容、升级、备份等 Day2 操作

cluster-import

获取架构

选择集群节点的 CPU 架构类型(支持 amd64、arm64 和混合架构三种类型)

获取 Api Server

  1. cat ~/.kube/config | grep server: | awk '{print $2}'

注意:如果 server IP 为 127.0.0.1,需要将 IP 替换为任意 master 节点 IP

获取 Router

装有 kube-proxy 的任意 K8s 集群节点的 IP 地址

  1. kubectl -n kube-system get pod -o wide | grep kube-proxy

注意:获取任意节点的 IP 地址

获取 Token

KubeOperator 创建集群

  1. kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep ko-admin | awk '{print $1}') | grep token: | awk '{print $2}'

自建集群

创建 Service Account

  1. apiVersion: v1
  2. kind: ServiceAccount
  3. metadata:
  4. name: kubeoperator-user
  5. namespace: kube-system

创建 ClusterRoleBinding

  1. apiVersion: rbac.authorization.k8s.io/v1
  2. kind: ClusterRoleBinding
  3. metadata:
  4. name: kubeoperator-user
  5. roleRef:
  6. apiGroup: rbac.authorization.k8s.io
  7. kind: ClusterRole
  8. name: cluster-admin
  9. subjects:
  10. - kind: ServiceAccount
  11. name: kubeoperator-user
  12. namespace: kube-system

获取 Token

  1. kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kubeoperator-user | awk '{print $1}') | grep token: | awk '{print $2}'

非 KubeOperator 创建集群

使用工具

仓库配置

  • 工具中涉及到的镜像来源于 nexus 镜像仓库。在启用工具之前,需要在所有 K8s 集群节点上对 nexus 镜像仓库进行 http 授信。
  1. vim /etc/docker/daemon.json
  1. {
  2. ...
  3. "insecure-registries" : [ "...", "kubeoperator-ip:8082", "..." ]
  4. ...
  5. }
  6. 注意:kubeoperator-ip KubeOperator 部署机 IP
  1. # 重新启动 docker 服务使得配置生效
  2. systemctl restart docker.service

KubeOperator 创建集群

获取容器运行时参数

Docker

  1. # 集群任意节点执行
  2. cat /etc/docker/daemon.json
  1. {
  2. ...
  3. "bip": "172.17.0.1/16", # Container 子网
  4. "data-root": "/var/lib/docker", # Docker 数据路径
  5. ...
  6. }

Containerd

  1. # 集群任意节点执行
  2. cat /etc/containerd/config.toml
  1. ...
  2. root = "/var/lib/containerd" # Containerd 数据路径
  3. ...

获取容器网络参数

flannel

网络模式

  1. # 集群任意节点执行
  2. kubectl -n kube-system get cm kube-flannel-cfg -o yaml
  1. {
  2. ...
  3. net-conf.json: |
  4. {
  5. "Network": "10.0.0.0/14",
  6. "Backend": {
  7. "Type": "vxlan" # 网络模式为 vxlan
  8. }
  9. }
  10. ...
  11. }

多网络设置

  1. # 集群任意节点执行
  2. kubectl -n kube-system get daemonsets.apps kube-flannel-ds -o yaml
  1. ...
  2. containers:
  3. - args:
  4. - --ip-masq
  5. - --kube-subnet-mgr
  6. - --iface=ens192 # 多网络设置为启用,网卡名称为 ens192
  7. ...

calico

网络模式

  1. # 集群任意节点执行
  2. kubectl -n kube-system get cm calico-config -o yaml
  1. ...
  2. containers:
  3. - env:
  4. - name: CALICO_IPV4POOL_IPIP
  5. value: "off" # off 代表网络模式为 bgp,Always 代表网络模式为 ipip
  6. ...

多网络设置

  1. # 集群任意节点执行
  2. kubectl -n kube-system get daemonsets.apps calico-node -o yaml
  1. ...
  2. containers:
  3. - env:
  4. - name: DATASTORE_TYPE
  5. value: kubernetes
  6. - name: IP_AUTODETECTION_METHOD
  7. value: interface=ens192 # 多网络设置为网卡,网卡名称为 ens192
  8. value: cidr=192.168.64.0/24 # 多网络设置为网段,网段为 192.168.64.0/24
  9. ...