最近在玩 Rancher, 先從最基本的功能玩起, 目前有幾個已經搭建好的 K8S 叢集, 需要批次匯入, 發現官網已經有批次匯入的檔案了. 根據 Rancher v2.6 進行驗證微調後總結經驗.
存取Rancher_URL/v3/clusters/
,單擊右上角「Create」,建立匯入叢集:
在引數填寫頁面中,修改以下引數:
dockerRootDir
預設為/var/lib/docker
,如果 dockerroot 路徑有修改,需要修改此設定路徑;enableClusterAlerting
(可選) 根據需要選擇是否預設開啟叢集告警;enableClusterMonitoring
(可選) 根據需要選擇是否預設開啟叢集監控;name
(必填) 設定叢集名稱,名稱具有唯一性,不能與現有叢集名稱相同;設定好引數後單擊Show Request
;
在彈出的視窗中,複製API Request
中HTTP Request:
的{}
中的內容,此內容即為建立的叢集的 API 引數;
#!/bin/bash
api_url='https://rancher-demo.example.com'
api_token='token-dbkgj:7pqf5rrjmlxxxxxxxxxxxxxxxxxxxxxxxtrnfljwtxh'
cluster_name=$1
create_cluster_data()
{
cat <<EOF
{
"agentEnvVars": [ ],
"aksConfig": null,
"aliyunEngineConfig": null,
"amazonElasticContainerServiceConfig": null,
"answers": null,
"azureKubernetesServiceConfig": null,
"clusterTemplateRevisionId": "",
"defaultClusterRoleForProjectMembers": "",
"defaultPodSecurityPolicyTemplateId": "",
"dockerRootDir": "/var/lib/docker",
"eksConfig": null,
"enableClusterAlerting": false,
"enableClusterMonitoring": false,
"gkeConfig": null,
"googleKubernetesEngineConfig": null,
"huaweiEngineConfig": null,
"k3sConfig": null,
"localClusterAuthEndpoint": null,
"name": "$cluster_name",
"rancherKubernetesEngineConfig": null,
"rke2Config": null,
"scheduledClusterScan": null,
"windowsPreferedCluster": false
}
EOF
}
curl -k -X POST \
-H "Authorization: Bearer ${api_token}" \
-H "Content-Type: application/json" \
-d "$(create_cluster_data)" $api_url/v3/clusters
儲存以上程式碼為指令碼檔案,最後執行指令碼。
./rancher_import_cluster.sh <your-cluster-name>
指令碼執行完成後,叢集狀態如下所示,其狀態為Provisioning;
這一步可能不需要, 建立叢集時就會自動生成 clusterregistrationtokens
這裡又生成了一遍, 會導致有多條 clusterregistrationtokens
複製並儲存以下內容為指令碼檔案,修改前三行api_url
、token
、cluster_name
,然後執行指令碼。
#!/bin/bash
api_url='https://rancher-demo.example.com'
api_token='token-dbkgj:7pqf5rrjmlbgtssssssssssssssssssssssssssssnfljwtxh'
cluster_name=$1
cluster_ID=$( curl -s -k -H "Authorization: Bearer ${api_token}" $api_url/v3/clusters | jq -r ".data[] | select(.name == \"$cluster_name\") | .id" )
# nodeCommand
#curl -s -k -H "Authorization: Bearer ${api_token}" $api_url/v3/clusters/${cluster_ID}/clusterregistrationtokens | jq -r .data[].nodeCommand
# command
#curl -s -k -H "Authorization: Bearer ${api_token}" $api_url/v3/clusters/${cluster_ID}/clusterregistrationtokens | jq -r .data[].command
# insecureCommand
curl -s -k -H "Authorization: Bearer ${api_token}" $api_url/v3/clusters/${cluster_ID}/clusterregistrationtokens | jq -r .data[].insecureCommand