自建Kubernetes集群接入ACK注册集群后的ECS节点初始化配置

简介: 本文主要介绍自建Kubernetes集群接入ACK注册集群并手动扩容阿里云ECS节点时的注意事项。
+关注继续查看

本文主要介绍自建Kubernetes集群接入ACK注册集群并手动扩容阿里云ECS节点时的注意事项。

PS:您也可以选择使用ACK注册集群的节点池功能扩容阿里云ECS节点,请参考阿里云注册集群—混合集群-使用自定义节点添加脚本

为自建Kubernetes集群新扩容阿里云ECS节点

需要用户在节点初始化脚本中设置 --provider-id=${ALIBABA_CLOUD_PROVIDE_ID}* 以及追加*--node-labels=${ALIBABA_CLOUD_LABELS}

ALIBABA_CLOUD_PROVIDE_IDALIBABA_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注册集群后,需要为已有节点添加节点标签,节点标签的作用如下所示:

  • ack.aliyun.com=${clusterID}。用于ACK管控从集群维度识别自建Kubernetes中的阿里云ECS节点。
  • alibabacloud.com/instance-id=${aliyunInstanceID}。用于ACK管控从节点维度识别自建Kubernetes中的阿里云ECS节点。
  • alibabacloud.com/external=true。用于自建Kubernetes集群中Terway,CSI等组件识别阿里云ECS节点 。

部署global-job-controller

$ cat <<EOF > 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:
      - globaljobs
    verbs:
      - "*"
  - apiGroups:
      - "*"
    resources:
      - pods
      - events
      - configmaps
    verbs:
      - "*"
  - apiGroups:
      - "*"
    resources:
      - nodes
    verbs:
      - "*"
  - apiGroups:
      - apiextensions.k8s.io
    resources:
      - customresourcedefinitions
    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
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
2月前
|
弹性计算 开发工具 git
第一章-阿里云ECS搭建CICD集群
本章内容为CICD中任务分发平台的构建
|
8月前
|
存储 分布式计算 运维
基于 Kubernetes 的企业级大数据平台,EMR on ACK 技术初探
通过阿里云容器服务 ACK 运行开源大数据任务,将以集群为中心的视角切换成以作业为中心视角,还可以实现在线业务、AI、大数据统一接入 ACK 集群,错峰调度,离线在线混部,提升机器利用率。并且,实现了运维入口、运维工具链、监控体系的三重统一。此外,还支持多版本,如同时运行 Spark2.x 和 Spark 3.x 任务。
基于 Kubernetes 的企业级大数据平台,EMR on ACK 技术初探
|
11月前
|
存储 Kubernetes NoSQL
【公开课】手把手基于阿里云 ACK 环境创建 Kubernetes 集群及部署应用|学习笔记
快速学习【公开课】手把手基于阿里云 ACK 环境创建 Kubernetes 集群及部署应用。
638 0
【公开课】手把手基于阿里云 ACK 环境创建 Kubernetes 集群及部署应用|学习笔记
|
运维 Kubernetes 前端开发
【云原生】阿里云服务器部署 Docker Swarm集群
阿里云服务器 一键部署 Docker Swarm 集群!
415 0
【云原生】阿里云服务器部署 Docker Swarm集群
|
弹性计算 运维 Kubernetes
企业级运维之云原生与Kubernetes实战课程 - 第四章第4讲 ACK集群弹性伸缩
弹性伸缩是根据业务需求和策略,经济地自动调整弹性计算资源的管理服务。
企业级运维之云原生与Kubernetes实战课程 - 第四章第4讲 ACK集群弹性伸缩
|
弹性计算 运维 Kubernetes
企业级运维之云原生与Kubernetes实战课程 - 第四章第2讲 ACK集群升级
随着社区K8s版本的不断演进,新的版本有着更为先进的新特性、更加全面的安全加固和漏洞修复。阿里云ACK也会对社区版本做适配,并且提供一键升级集群的功能。
企业级运维之云原生与Kubernetes实战课程 - 第四章第2讲 ACK集群升级
|
弹性计算 运维 Kubernetes
企业级运维之云原生与Kubernetes实战课程 - 第四章第1讲 ACK集群权限管理
1. ACK集群权限管理 2. ACK集群升级 3. ACK集群节点管理 4. ACK集群弹性伸缩 5. ACK集群故障处理与疑难处置 6. 实验四:流水线部署
企业级运维之云原生与Kubernetes实战课程 - 第四章第1讲 ACK集群权限管理
|
弹性计算 Kubernetes 网络协议
企业级运维之云原生与Kubernetes实战课程 第三章第5讲 阿里云ACK集群网络
一、 Flannel网络 二、 Terway网络 三、 CoreDNS 四、 最佳实践
企业级运维之云原生与Kubernetes实战课程 第三章第5讲 阿里云ACK集群网络
相关产品
容器服务Kubernetes版
推荐文章
更多