接入 rancher 集群¶
本文介绍如何接入 rancher 集群。
前提条件¶
- 准备一个具有管理员权限的待接入 ranhcer 集群,确保容器管理集群和待接入集群之间网络通畅。
- 当前操作用户应具有 Kpanda Owner 或更高权限。
操作步骤¶
步骤一:在 rancher 集群创建具有管理员权限的 ServiceAccount 用户¶
-
使用具有管理员权限的角色进入 rancher 集群,并使用终端新建一个名为 sa.yaml 的文件。
然后按下 i 键进入插入模式,输入以下内容:
sa.yamlapiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: rancher-rke rules: - apiGroups: - '*' resources: - '*' verbs: - '*' - nonResourceURLs: - '*' verbs: - '*' --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: rancher-rke roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: rancher-rke subjects: - kind: ServiceAccount name: rancher-rke namespace: kube-system --- apiVersion: v1 kind: ServiceAccount metadata: name: rancher-rke namespace: kube-system
按下 esc 键退出插入模式,然后输入 __ :wq__ 保存并退出。
-
在当前路径下执行如下命令,新建名为 rancher-rke 的 ServiceAccount(以下简称为 SA ):
预期输出如下:
-
创建名为 rancher-rke-secret 的密钥,并将密钥和 rancher-rke SA 绑定。
kubectl apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: rancher-rke-secret namespace: kube-system annotations: kubernetes.io/service-account.name: rancher-rke type: kubernetes.io/service-account-token EOF
预期输出如下:
Note
如果您的集群版本低于 1.24,请忽略此步骤,直接前往下一步。
-
查找 rancher-rke SA 的密钥:
预期输出:
查看密钥 rancher-rke-secret 的详情:
预期输出:
Name: rancher-rke-secret Namespace: kube-system Labels: <none> Annotations: kubernetes.io/service-account.name: rancher-rke kubernetes.io/service-account.uid: d83df5d9-bd7d-488d-a046-b740618a0174 Type: kubernetes.io/service-account-token Data ==== ca.crt: 570 bytes namespace: 11 bytes token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjUtNE9nUWZLRzVpbEJORkZaNmtCQXhqVzRsZHU4MHhHcDBfb0VCaUo0V1kifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJyYW5jaGVyLXJrZS1zZWNyZXQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoicmFuY2hlci1ya2UiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJkODNkZjVkOS1iZDdkLTQ4OGQtYTA0Ni1iNzQwNjE4YTAxNzQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06cmFuY2hlci1ya2UifQ.VNsMtPEFOdDDeGt_8VHblcMRvjOwPXMM-79o9UooHx6q-VkHOcIOp3FOT2hnEdNnIsyODZVKCpEdCgyozX-3y5x2cZSZpocnkMcBbQm-qfTyUcUhAY7N5gcYUtHUhvRAsNWJcsDCn6d96gT_qo-ddo_cT8Ri39Lc123FDYOnYG-YGFKSgRQVy7Vyv34HIajZCCjZzy7i--eE_7o4DXeTjNqAFMFstUxxHBOXI3Rdn1zKQKqh5Jhg4ES7X-edSviSUfJUX-QV_LlAw5DuAyGPH7bDH4QaQ5k-p6cIctmpWZE-9wRDlKA4LYRblKE7MJcI6OmM4ldlMM0Jc8N-gCtl4w
步骤二:在本地使用 rancher-rke SA 的认证信息更新 kubeconfig 文件¶
在任意一台安装了 kubelet 的本地节点执行如下操作:
-
配置 kubelet token:
例如:
kubectl config set-credentials eks-admin --token=eyJhbGciOiJSUzI1NiIsImtpZCI6IjUtNE9nUWZLRzVpbEJORkZaNmtCQXhqVzRsZHU4MHhHcDBfb0VCaUo0V1kifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJyYW5jaGVyLXJrZS1zZWNyZXQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoicmFuY2hlci1ya2UiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJkODNkZjVkOS1iZDdkLTQ4OGQtYTA0Ni1iNzQwNjE4YTAxNzQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06cmFuY2hlci1ya2UifQ.VNsMtPEFOdDDeGt_8VHblcMRvjOwPXMM-79o9UooHx6q-VkHOcIOp3FOT2hnEdNnIsyODZVKCpEdCgyozX-3y5x2cZSZpocnkMcBbQm-qfTyUcUhAY7N5gcYUtHUhvRAsNWJcsDCn6d96gT_qo-ddo_cT8Ri39Lc123FDYOnYG-YGFKSgRQVy7Vyv34HIajZCCjZzy7i--eE_7o4DXeTjNqAFMFstUxxHBOXI3Rdn1zKQKqh5Jhg4ES7X-edSviSUfJUX-QV_LlAw5DuAyGPH7bDH4QaQ5k-p6cIctmpWZE-9wRDlKA4LYRblKE7MJcI6OmM4ldlMM0Jc8N-gCtl4w
-
配置 kubelet APIServer 信息:
- {集群名} :指 rancher 集群的名称。
- {APIServer} :指集群的访问地址,一般为集群控制节点 IP + 6443 端口,如
https://10.X.X.X:6443
例如:
-
配置 kubelet 上下文信息:
例如:
-
在 kubelet 中指定我们刚刚新建的上下文 rancher-rke-context :
-
获取上下文 rancher-rke-context 中的 kubeconfig 信息。
预期输出:
apiVersion: v1 clusters: - cluster: insecure-skip-tls-verify: true server: https://77C321BCF072682C70C8665ED4BFA10D.gr7.ap-southeast-1.eks.amazonaws.com name: joincluster contexts: - context: cluster: joincluster user: eks-admin name: ekscontext current-context: ekscontext kind: Config preferences: {} users: - name: eks-admin user: token: eyJhbGciOiJSUzI1NiIsImtpZCI6ImcxTjJwNkktWm5IbmRJU1RFRExvdWY1TGFWVUtGQ3VIejFtNlFQcUNFalEifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2V
步骤三:在 DCE 界面接入集群¶
使用刚刚获取的 kubeconfig 文件,参考接入集群文档,将 rancher 集群接入 global 集群。