创建加密计算托管集群
本文介绍如何在控制台创建阿里云容器服务安全加密计算托管集群(Alishellbaba Cloud Container Service for Kubernetes-Trusted Execution Environment,简称ACK-TEE)。
前提条件
您需要开通容器服务和访问控制(RAM)服务。
您在使用集群过程中,请注意以下限制:
- 用户账户至少需要有100元的余额并通过实名认证,否则无法创建按量付费的ECS实例和负载均衡。
- ACK集群仅支持专有网络VPC。
- 每个账号默认可以创建的云资源有一定的配额,如果超过配额创建集群会失败。关于具体配额信息,请参见配额限制。
- 每个账户初始默认状况下VPC路由条目不超过200条,当ACK集群的网络模式是Flannel时,集群的路由条目最大不能超过200个(网络模式是Terway则不受该影响)。如集群需要更多路由条目数,您需要对目标VPC申请提高配额 。
- 每个账号默认最多可以创建100个安全组。
- 每个账号默认最多可以创建60个按量付费的负载均衡实例。
- 每个账号默认最多可以创建20个EIP。
创建加密计算Kubernetes集群时,以下界面参数需要按照表中的要求配置,否则创建的集群将无法支持运行Intel SGX应用。
参数
配置
可用区
目前只有规格族为安全增强计算型c7t、安全增强通用型g7t、安全增强内存型r7t的实例规格支持加密计算集群,请确保所选可用区有这些实例规格。
容器运行时
Containerd 1.4.4或更高版本。
实例规格
选择规格族为安全增强计算型c7t、安全增强通用型g7t、安全增强内存型r7t的实例规格。
说明 Intel IceLake仅支持基于Intel SGX DCAP的远程证明方式,不支持基于Intel EPID方式的远程证明方式,您的程序可能需要适配后才能正常使用远程证明功能。关于远程证明的更多信息,请参见attestation-services。操作系统类型
AliyunLinux 2.xxxx 64位UEFI版。
网络插件
Flannel。
操作步骤
- 登录容器服务管理控制台,在左侧导航栏选择集群。
- 在集群列表页面,单击页面右上角的集群模板。
在选择集群模板页面的托管集群区域选择加密计算托管集群,并单击创建。
在ACK托管版页面,完成集群配置。
完成集群基础选项配置。
配置项
描述
集群名称
填写集群的名称。说明 集群名称应包含1~63个字符,可包含数字、汉字、英文字符、短划线(-)或下划线(_),且不能以下划线(_)开头。集群规格
选择集群规格,支持Pro 版和标准版。企业生产和测试环境中推荐使用Pro版集群。标准版集群仅供个人学习与测试使用。
地域
选择集群所在的地域。
付费类型
容器服务Kubernetes版支持按量付费和包年包月两种付费类型。选择包年包月时,需设置以下参数。说明 设置付费类型为包年包月时,仅ECS云服务器和SLB负载均衡按照包年包月的方式计费,其他云资源仍然按照按量付费的方式付费。关于云资源的详细介绍,请参见云产品资源计费。- 购买时长:目前支持选择1、2、3、6个月和1~3年。
- 自动续费:设置是否自动续费。
账号全部资源
将鼠标悬浮于页面上方的账号全部资源,选择资源组。在控制台页面顶部选择的资源组可过滤出该资源组内的专有网络及对应的虚拟交换机。在创建集群时,只显示过滤的专有网络实例及专有网络对应的虚拟交换机实例。Kubernetes 版本
显示当前ACK支持的Kubernetes版本。
加密计算集群
选中开启。
容器运行时
容器运行时仅支持Containerd。更多信息,请参见如何选择Docker运行时、Containerd运行时、或者安全沙箱运行时?。
专有网络
设置集群的网络,您可以选择普通VPC和共享VPC。- 共享VPC:VPC的所有者账号(资源所有者)可以将其账号下的VPC内的交换机资源共享给其组织内的其他账号使用。
- 普通VPC:不具备共享功能的VPC。
说明 Kubernetes集群仅支持专有网络。您可以在已有VPC列表中选择所需的VPC。如果没有您需要的专有网络,可以通过单击创建专有网络进行创建,请参见创建和管理专有网络。虚拟交换机
设置虚拟交换机。
您可以在已有虚拟交换机列表中,根据可用区选择交换机。如果没有您需要的交换机,可以通过单击创建虚拟交换机进行创建,请参见创建和管理交换机。
网络插件
加密计算仅支持Flannel。
Pod网络CIDR
网络插件选择Flannel时,需要配置Pod 网络 CIDR。
Flannel网络插件需要配置Pod网络CIDR,网段不能和VPC及VPC已有Kubernetes集群使用的网段重复,创建成功后不能修改,而且Service地址段不能和Pod地址段重复。有关Kubernetes网络地址段规划的信息,请参见Kubernetes集群网络规划。
Service CIDR
设置Service CIDR。您需要指定Service CIDR,网段不能与VPC及VPC内已有Kubernetes集群使用的网段重复,创建成功后不能修改,而且Service地址段也不能和Pod地址段重复。有关Kubernetes网络地址段规划的信息,请参见Kubernetes集群网络规划。
节点Pod数量
如果您选择的网络模式为Flannel,您需设置节点 Pod 数量。
配置SNAT
创建集群时,默认不开通公网。如果您选择的VPC不具备公网访问能力,选中为专有网络配置SNAT后,ACK将为您创建NAT网关并自动配置SNAT规则。
API Server 访问
ACK默认为API Server创建一个内网SLB实例,您可修改SLB实例规格。更多信息,请参见实例规格。重要 删除默认创建的SLB实例将会导致无法访问API Server。您可设置是否开放使用 EIP 暴露API Server。API Server提供了各类资源对象(Pod,Service等)的增删改查及Watch等HTTP Rest接口。- 如果选择开放,ACK会创建一个EIP,并挂载到SLB上。此时,Master节点的6443端口(对应API Server)暴露出来,您可以在外网通过kubeconfig连接并操作集群。
- 如果选择不开放,则不会创建EIP,您只能在VPC内部用kubeconfig连接并操作集群。
安全组
集群删除保护
设置是否启用集群删除保护。选择开启可以防止通过控制台或API误释放集群。
资源组
创建的集群将归属于选择的资源组。一个资源只能归属于一个资源组。根据不同的业务场景,您可以将资源组映射为项目、应用或组织等概念。更多信息,请参见资源组。
完成集群高级选项配置。
配置项
描述
kube-proxy代理模式
支持iptables和IPVS两种模式。- iptables:成熟稳定的kube-proxy代理模式,Kubernetes Service的服务发现和负载均衡使用iptables规则配置,但性能一般,受规模影响较大,适用于存在少量Service的集群。
- IPVS:高性能的kube-proxy代理模式,Kubernetes Service的服务发现和负载均衡使用Linux ipvs模块进行配置,适用于存在大量Service的集群,对负载均衡有高性能要求的场景。
标签
为集群绑定标签。输入键和对应的值,单击添加。说明- 键是必需的,而值是可选的,可以不填写。
- 键不能是aliyun、http://、https://开头的字符串,不区分大小写,最多64个字符。
- 值不能是http:// 或https://,可以为空,不区分大小写,最多128个字符。
- 同一个资源,标签键不能重复,相同标签键(Key)的标签会被覆盖。
- 如果一个资源已经绑定了20个标签,已有标签和新建标签会失效,您需要解绑部分标签后才能再绑定新的标签。
集群本地域名
设置是否配置集群本地域名。说明 默认域名为cluster.local,可自定义域名。域名由两段组成,每段不超过63个字符,且只能使用大小写字母和数字,不能为空。自定义证书 SAN
在集群API Server服务端证书的SAN(Subject Alternative Name)字段中添加自定义的IP或域名,以实现对客户端的访问控制。
具体操作,请参见自定义集群API Server证书SAN。
服务账户令牌卷投影
开启服务账户令牌卷投影以降低在Pod中使用Service Account遇到的安全性问题,可使得kubelet支持基于Pod粒度的Token签发,并且支持Token audience和过期时间的配置。详情请参见部署服务账户令牌卷投影
Secret落盘加密
根据需要选择是否勾选选择KMS密钥。
单击下一步:节点池配置,完成Worker节点配置。
选择Worker实例。
说明加密计算场景下, Worker节点只有规格族为安全增强计算型c7t、安全增强通用型g7t、安全增强内存型r7t的实例规格支持加密计算集群运行Intel SGX2.0应用。
如果您选择新增实例,需要进行以下配置。
配置项
描述
节点池名称
自定义的节点池名称。
实例规格
目前仅规格族为安全增强计算型c7t、安全增强通用型g7t、安全增强内存型r7t的实例规格支持运行Intel SGX2.0应用。
已选规格
已选的实例规格,可以选一个或多个规格。
数量
新增Worker实例(ECS实例)的数量。
系统盘
支持ESSD云盘、SSD云盘和高效云盘。系统盘可选的类型与选择的实例规格相关。查询实例规格支持的云盘类型,请参见实例规格族。如果云盘类型下拉列表没有显示的云盘类型,代表不支持该云盘类型。说明- ESSD云盘支持自定义性能级别。ESSD云盘容量越大,可供选择的性能级别越高(460 GiB容量以上可选PL2,1260 GiB以上可选PL3)。更多信息,请参见容量范围与性能级别的关系。
- 仅ESSD云盘支持加密,系统盘加密仅支持aes-256加密算法。关于系统盘加密,请参见加密系统盘。
挂载数据盘
支持ESSD云盘、SSD云盘和高效云盘。挂载数据盘时,数据盘可选的类型与选择的实例规格相关。查询实例规格支持的云盘类型,请参见实例规格族。如果云盘类型下拉列表没有显示的云盘类型,代表不支持该云盘类型。说明- ESSD云盘支持自定义性能级别。ESSD云盘容量越大,可供选择的性能级别越高(460 GiB容量以上可选PL2,1260 GiB以上可选PL3)。更多信息,请参见容量范围与性能级别的关系。
- 仅ESSD云盘支持加密。数据盘加密仅支持aes-256加密算法。目前华东5(南京-本地地域)、华东6(福州-本地地域)、泰国(曼谷)和韩国(首尔)地域仅支持阿里云默认使用托管的服务密钥(Default Service CMK)进行加密,不支持自选自定义密钥(BYOK)。关于数据盘加密,请参见加密数据盘。
- 最大可挂载的数据盘数量与选择的实例规格相关,当前已挂载的数据盘数量和剩余可挂载的数据盘数量请在挂载数据盘后面查看。
操作系统
仅支持AliyunLinux 2.xxxx 64位UEFI版。
登录方式
如果您选择添加已有实例,则至少添加两个以上的Worker实例。您需要配置操作系统、登录方式和密钥对,配置描述参见上文。
设置高级选项。
配置项
描述
实例保护
设置是否启用实例保护。说明 为防止通过控制台或API误释放集群节点,默认启用实例保护。实例自定义数据
自定义脚本,在节点初始化之后会执行该脚本。
说明Windows支持bat和powershell两种格式,在Base64编码前,第一行为[bat]或者 [powershell]。Linux支持Shell脚本,更多的格式请参见cloud-init和ECS实例自定义数据概述。
如果您使用的自定义脚本长度大于1 KB,建议您将脚本上传到OSS,通过OSS内网端点拉取脚本执行。
自定义镜像
重要不使用自定义镜像,否则无法保证提供加密计算服务。
RDS 白名单
单击请选择您想要添加白名单的RDS实例,将节点IP添加至RDS实例的白名单。
自定义节点名称
是否开启自定义节点名称。自定义节点名称后,将同时更改节点名称、ECS实例名称、ECS实例Hostname。
节点名称由前缀,节点IP地址及后缀三部分组成:- 总长度为2-64个字符。
- 前缀和后缀允许使用大小写字母、数字、连字符(-)和点号(.)。必须以大小写字母开头,不能以连字符(-)或点号(.)开头或结尾。不能连续使用连字符(-)或点号(.)。
- 前缀必选(ECS限制),后缀可选。
- 对于开启自定义节点名称的Windows实例,其Hostname固定为IP地址,用"-"代替IP地址中的".",且不包含前缀和后缀。
CPU Policy
更多信息,请参见CPU管理策略。
污点(Taints)
为Kubernetes集群节点添加污点,污点(Taints)包含键、值和Effect(效果)。有效污点键包含前缀(可选)和名称。如果有前缀,用正斜线(/)分隔。更多信息,请参见污点和容忍度。污点有以下限制:- 键:污点键的名称长度为1~63个字符,必须以字母、数字或字符
[a-z0-9A-Z]
开头和结尾,中间可包含字母、数字、短划线(-)、下划线(_)、英文半角句号(.)。如果指定前缀,必须是DNS子域。即一系列由英文半角句号(.)分隔的DNS标签,不超过253个字符,以正斜线(/)结尾。关于DNS子域,请参见DNS子域。
- 值:污点值可以为空,不超过63个字符,必须以字母、数字或字符
[a-z0-9A-Z]
开头和结尾,可包含字母、数字、短划线(-)、下划线(_)、英文半角句号(.)。 - Effect:可选择NoSchedule、NoExecute、PreferNoSchedule三种。
- NoSchedule:如果污点中存在至少一个Effect值为NoSchedule的污点,则系统不会将Pod分配到该节点。
- NoExecute:任何不能忍受这个污点的Pod都会被驱逐,任何可以忍受这个污点的Pod都不会被驱逐。
- PreferNoSchedule:系统会尽量避免将Pod调度到存在其不能容忍污点的节点上,但不会强制执行。
单击下一步:组件配置,完成组件配置。
配置项
描述
Ingress
设置是否安装Ingress组件。默认为Nginx Ingress。- 可选择不安装。
- 可选择Nginx Ingress。关于Nginx Ingress的更多使用说明,请参见Nginx Ingress高级用法。
- 可选择ALB Ingress。关于如何在ACK集群中通过ALB Ingress访问服务,请参见通过ALB Ingress访问服务。
- 可选择MSE Ingress。关于如何在ACK集群中通过MSE Ingress访问服务,请参见通过MSE Ingress访问容器服务。
说明如果您勾选创建Ingress Dashboard,则需要同步安装日志服务组件。
服务发现
设置是否安装NodeLocal DNSCache组件,默认安装NodeLocal DNSCache。
NodeLocal DNSCache用于运行DNS缓存代理以提升域名解析性能和稳定性。关于NodeLocal DNSCache的更多信息,请参见使用NodeLocal DNSCache。
存储插件
默认是CSI存储插件。默认选中创建默认NAS文件系统和CNFS容器网络文件系统动态存储类型,并默认开启 NAS 回收站特性,支持数据快速恢复。。Kubernetes集群通过Pod可自动绑定阿里云云盘、NAS、OSS存储服务。更多信息,请参见存储管理-CSI。
监控插件
默认选中使用 Prometheus 监控服务,为容器服务ACK集群提供基础监控和报警。
报警配置
默认选中使用默认报警模板配置报警,开启默认报警规则。开启后,可以设置报警通知联系人分组,默认为Default Contact Group。详细介绍,请参见容器服务报警管理。
日志服务
设置是否启用日志服务,您可使用已有Project或新建一个Project。默认选中使用日志服务。创建应用时,您可通过简单配置,快速使用日志服务,详情参见通过日志服务采集Kubernetes容器日志。
默认选中安装node-problem-detector并创建事件中心,您可以选择是否在日志服务控制台中添加事件中心。更多信息,请参见创建并使用K8s事件中心。
工作流引擎
设置是否使用AGS。说明 当前只有白名单用户可以使用该功能。- 如果选中AGS,则创建集群时系统自动安装AGS工作流插件。
- 如果不选中,则需要手动安装AGS工作流插件,请参见AGS命令行帮助。
单击下一步:确认配置,确认配置信息并选中服务协议。
单击创建集群,启动部署。
您还可以看到集群创建的日志信息。
说明一个包含多节点的Kubernetes集群的创建时间一般约为十分钟。
执行结果
集群创建成功后,您可以在容器服务管理控制台的集群列表页面查看所创建的集群。
您可以单击操作列的查看日志,进入集群日志信息页面查看集群的日志信息。 您也可以在集群日志信息页面中,单击资源栈事件查看更详细的信息。
在集群列表页面中,找到刚创建的集群,单击集群名称或者操作列中的详情,然后单击基本信息和连接信息页签,查看集群的基本信息和连接信息。
其中:
API Server公网连接端点:Kubernetes的API Server对公网提供服务的地址和端口,可以通过此服务在用户终端使用kubectl等工具管理集群。
绑定EIP和解绑EIP功能仅支持托管版Kubernetes集群。
绑定EIP:您可以选择在已有EIP列表中绑定EIP或者新建EIP。
绑定EIP操作为导致API Server短暂重启,请避免在此期间操作集群。
解绑EIP:解绑EIP后您将无法通过公网访问API Server。
解绑EIP操作会导致API Server短暂重启,请避免在此期间操作集群。
API Service内网连接端点:Kubernetes的API Server对集群内部提供服务的地址和端口,此IP为负载均衡的地址。
您可以获取集群KubeConfig并通过kubectl工具连接集群,执行
kubectl get node
查看集群的节点信息。