ECS node initialization configuration after ACK registration
Alibaba Cloud ECS ノードをセルフビルド Kubernetes クラスター用に拡張
ユーザーはノード初期化スクリプトで --provider-id=${ALIBABA_CLOUD_PROVIDE_ID}* を設定し、*--node-labels=${ALIBABA_CLOUD_LABELS} を追加する必要があります。
ALIBABA_CLOUD_PROVIDE_ID 変数と ALIBABA_CLOUD_LABELS 変数の値は以下のとおりです。
$ clusterID=xxxxx
$ aliyunRegionID=$(curl 100.100.100.200/latest/meta-data/region-id)
$ aliyunInstanceID=$(curl 100.100.100.200/latest/meta-data/instance-id)
$ ALIBABA_CLOUD_PROVIDE_ID=${aliyunRegionID}.${aliyunInstanceID}
$ ALIBABA_CLOUD_LABELS="ack.aliyun.com=${clusterID},alibabacloud.com/instance-id=${aliyunInstanceID},alibabacloud.com/external=true"
セルフビルド Kubernetes クラスターの既存ノードを一括でマーク
セルフビルド Kubernetes クラスターを ACK 登録済みクラスターに接続した後、既存のノードにノードラベルを追加する必要があります。ノードラベルの役割は以下のとおりです。
1: ack.aliyun.com=${clusterID} — ACK コントロールプレーンがクラスターディメンションでセルフビルド Kubernetes 内の Alibaba Cloud ECS ノードを識別するために使用します。
2: alibabacloud.com/instance-id=${aliyunInstanceID} — ACK コントロールプレーンがノードディメンションでセルフビルド Kubernetes 内の Alibaba Cloud ECS ノードを識別するために使用します。
3: alibabacloud.com/external=true — セルフビルド Kubernetes クラスター内の Terway や CSI などのコンポーネントが Alibaba Cloud ECS ノードを識別するために使用します。
global-job-controller のデプロイ
$ cat < global-job-controller.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: global-job-controller
namespace: kube-system
labels:
app: global-job-controller
spec:
replicas: 1
selector:
matchLabels:
app: global-job-controller
template:
metadata:
labels:
app: global-job-controller
spec:
restartPolicy: Always
serviceAccount: jobs
containers:
- name: global-job-controller
image: registry.cn-hangzhou.aliyuncs.com/acs/global-job:v1.0.0.36-g0d1ac97-aliyun
env:
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: WATCH_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: jobs
rules:
- apiGroups:
- jobs.aliyun.com
resources:
- global jobs
verbs:
- "*"
- apiGroups:
- "*"
resources:
- pods
-events
- configmaps
verbs:
- "*"
- apiGroups:
- "*"
resources:
-nodes
verbs:
- "*"
- apiGroups:
- apiextensions.k8s.io
resources:
- custom resource definitions
verbs:
- get
- list
- create
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: jobs-role-bind
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: jobs
subjects:
- kind: ServiceAccount
name: jobs
namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: jobs
namespace: kube-system
EOF
$ kubectl apply -f global-job-controller.yaml
global-job-controller が正常に実行されるまで待機します。
globaljob のデプロイ
$ export CLUSTER_ID=xxxxxx
$ cat << EOF > globaljob.yaml
apiVersion: jobs.aliyun.com/v1alpha1
kind: GlobalJob
metadata:
name: globaljob
namespace: kube-system
spec:
maxParallel: 100
terminalStrategy:
type: Never
template:
spec:
serviceAccountName: ack
restartPolicy: Never
containers:
-name: globaljob
image: registry.cn-hangzhou.aliyuncs.com/acs/marking-agent:v1.13.1.39-g4186808-aliyun
imagePullPolicy: Always
env:
- name: REGISTRY_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: CLUSTER_ID
value: "$CLUSTER_ID"
$ kubectl apply -f globaljob.yaml
実行後、ECS ノードが正しくマークされたことを確認し、前述のリソースを解放します。
$ kubectl delete -f globaljob.yaml -f global-job-controller.yaml
ユーザーはノード初期化スクリプトで --provider-id=${ALIBABA_CLOUD_PROVIDE_ID}* を設定し、*--node-labels=${ALIBABA_CLOUD_LABELS} を追加する必要があります。
ALIBABA_CLOUD_PROVIDE_ID 変数と ALIBABA_CLOUD_LABELS 変数の値は以下のとおりです。
$ clusterID=xxxxx
$ aliyunRegionID=$(curl 100.100.100.200/latest/meta-data/region-id)
$ aliyunInstanceID=$(curl 100.100.100.200/latest/meta-data/instance-id)
$ ALIBABA_CLOUD_PROVIDE_ID=${aliyunRegionID}.${aliyunInstanceID}
$ ALIBABA_CLOUD_LABELS="ack.aliyun.com=${clusterID},alibabacloud.com/instance-id=${aliyunInstanceID},alibabacloud.com/external=true"
セルフビルド Kubernetes クラスターの既存ノードを一括でマーク
セルフビルド Kubernetes クラスターを ACK 登録済みクラスターに接続した後、既存のノードにノードラベルを追加する必要があります。ノードラベルの役割は以下のとおりです。
1: ack.aliyun.com=${clusterID} — ACK コントロールプレーンがクラスターディメンションでセルフビルド Kubernetes 内の Alibaba Cloud ECS ノードを識別するために使用します。
2: alibabacloud.com/instance-id=${aliyunInstanceID} — ACK コントロールプレーンがノードディメンションでセルフビルド Kubernetes 内の Alibaba Cloud ECS ノードを識別するために使用します。
3: alibabacloud.com/external=true — セルフビルド Kubernetes クラスター内の Terway や CSI などのコンポーネントが Alibaba Cloud ECS ノードを識別するために使用します。
global-job-controller のデプロイ
$ cat <
apiVersion: apps/v1
kind: Deployment
metadata:
name: global-job-controller
namespace: kube-system
labels:
app: global-job-controller
spec:
replicas: 1
selector:
matchLabels:
app: global-job-controller
template:
metadata:
labels:
app: global-job-controller
spec:
restartPolicy: Always
serviceAccount: jobs
containers:
- name: global-job-controller
image: registry.cn-hangzhou.aliyuncs.com/acs/global-job:v1.0.0.36-g0d1ac97-aliyun
env:
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: WATCH_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: jobs
rules:
- apiGroups:
- jobs.aliyun.com
resources:
- global jobs
verbs:
- "*"
- apiGroups:
- "*"
resources:
- pods
-events
- configmaps
verbs:
- "*"
- apiGroups:
- "*"
resources:
-nodes
verbs:
- "*"
- apiGroups:
- apiextensions.k8s.io
resources:
- custom resource definitions
verbs:
- get
- list
- create
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: jobs-role-bind
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: jobs
subjects:
- kind: ServiceAccount
name: jobs
namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: jobs
namespace: kube-system
EOF
$ kubectl apply -f global-job-controller.yaml
global-job-controller が正常に実行されるまで待機します。
globaljob のデプロイ
$ export CLUSTER_ID=xxxxxx
$ cat << EOF > globaljob.yaml
apiVersion: jobs.aliyun.com/v1alpha1
kind: GlobalJob
metadata:
name: globaljob
namespace: kube-system
spec:
maxParallel: 100
terminalStrategy:
type: Never
template:
spec:
serviceAccountName: ack
restartPolicy: Never
containers:
-name: globaljob
image: registry.cn-hangzhou.aliyuncs.com/acs/marking-agent:v1.13.1.39-g4186808-aliyun
imagePullPolicy: Always
env:
- name: REGISTRY_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: CLUSTER_ID
value: "$CLUSTER_ID"
$ kubectl apply -f globaljob.yaml
実行後、ECS ノードが正しくマークされたことを確認し、前述のリソースを解放します。
$ kubectl delete -f globaljob.yaml -f global-job-controller.yaml
Related Articles
-
A detailed explanation of Hadoop core architecture HDFS
Knowledge Base Team
-
What Does IOT Mean
Knowledge Base Team
-
6 Optional Technologies for Data Storage
Knowledge Base Team
-
What Is Blockchain Technology
Knowledge Base Team
Explore More Special Offers
-
Short Message Service(SMS) & Mail Service
50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00
