介绍
阿里云边缘托管Kubernetes集群支持对边缘计算场景的容器应用和资源全生命周期管理
参考文档:
ack edge架构
-
创建集群时,您需要选择购买至少1台云端ECS节点,用于部署边缘运维通道组件edge-tunnel-server。
-
为创建安全加密的公网运维通道,系统会为edge-tunnel-server组件创建的服务对象购买一个SLB,边缘节点上的edge-tunnel-agent将通过该SLB与edge-tunnel-server建立安全加密的运维通道。
-
当云端组件(例如:kube-apiserver、metrics-server)访问边缘节点10250和10255端口时,边缘集群默认会将访问请求自动导流到edge-tunnel-server组件,云端组件无需做任何修改。
ack edge 基于开源项目openyurt,有兴趣可以阅读
使用
1. 创建ACK EDGE集群
阿里云不支持在当前集群中添加EDGE功能,需要另外创建集群,创建方法参考边缘托管版集群
注意项:
-
需要RAM权限
-
需要开通ESS权限
-
需要开通ENS服务
-
尽量添加多个region的vswitch(后期不可变更cluster vswitch)
-
创建时云端ECS 会被打上污点
node-role.alibabacloud.com/addon
-
默认集群节点数量40,增加需要提工单申请
2. 添加边缘节点
添加边缘节点方法
注意项:
- 添加边缘节点前提前规划好主机名或在生成的添加脚本中加入参数
nodeNameOverride
- 加入边缘节点收费标准: 6¥/核 月
- 跨节点池之间无法实现服务间通讯
- 同一机房(三层网络互通)建议接入同一边缘节点池,同一边缘节点池不建议跨机房
- 手动给边缘节点池节点打上特征标签,方便后续部署应用调度
- 添加边缘节点后设置节点自治
3. 移除边缘节点
- 可以使用
kubectl delete node
或通过控制台移除子节点 - 需要使用接入工具Edgeadm的Reset子命令重置节点之后才能接入其它集群
4. kubectl 管理集群
- 可以使用kubectl 命令管理不同集群的应用(logs, exec, cp, top .....)
- 使用常规deployment需要注意设置好对应边缘节点的
nodeSelector
- ACK@Edge提供单元化部署(UnitedDeployment) 对多边缘节点池节点实现统一管理
unitedDeployment 使用
cat << EOF | kubectl apply -f -
apiVersion: apps.openyurt.io/v1alpha1
kind: UnitedDeployment
metadata:
name: example
namespace: default
spec:
revisionHistoryLimit: 5
selector:
matchLabels:
app: example
workloadTemplate:
deploymentTemplate:
metadata:
creationTimestamp: null
labels:
app: example
spec:
selector:
matchLabels:
app: example
template:
metadata:
creationTimestamp: null
labels:
app: example
spec:
containers:
- image: nginx:1.19.3
imagePullPolicy: Always
name: nginx
dnsPolicy: ClusterFirst
restartPolicy: Always
topology:
pools:
- name: cloud
nodeSelectorTerm:
matchExpressions:
- key: apps.openyurt.io/nodepool
operator: In
values:
- np00d5e418870d49698a4e3612004266fb
replicas: 2
- name: edge
nodeSelectorTerm:
matchExpressions:
- key: apps.openyurt.io/nodepool
operator: In
values:
- np470838348300460b8d40e1aed99b3730
replicas: 2
tolerations:
- effect: NoSchedule
key: node-role.alibabacloud.com/addon
operator: Exists
EOF