3.2. 使用带有 Web 控制台的对等 pod 部署 OpenShift 沙盒容器工作负载
您可从 web 控制台部署 OpenShift 沙盒容器工作负载。首先,您必须安装 OpenShift 沙盒容器 Operator,然后创建一个 secret 对象、虚拟机镜像和 peer-pod ConfigMap。secret 对象和 ConfigMap 是唯一的,具体取决于您的云供应商。最后,您必须创建 KataConfig
自定义资源(CR)。在沙盒容器中部署工作负载后,您必须手动将 kata-remote
作为 runtimeClassName
添加到工作负载 YAML 文件中。
3.2.1. 使用 Web 控制台安装 OpenShift 沙盒容器 Operator
您可从 OpenShift Container Platform Web 控制台安装 OpenShift 沙盒容器 Operator。
先决条件
- 已安装 OpenShift Container Platform 4.15。
-
您可以使用具有
cluster-admin
角色的用户访问集群。
流程
-
从 Web 控制台中的 Administrator 视角,进入到 Operators
OperatorHub。 -
在 Filter by keyword 字段中,输入
OpenShift sandboxed containers
。 - 选择 OpenShift sandboxed containers 标题。
- 阅读 Operator 信息并单击 Install。
在 Install Operator 页面中:
- 从可用 Update Channel 选项列表中选择 stable。
验证为 Installed Namespace 选择了 Operator recommended Namespace。这会在
openshift-sandboxed-containers-operator
命名空间中安装 Operator。如果此命名空间尚不存在,则会自动创建。注意尝试在
openshift-sandboxed-containers-operator
以外的命名空间中安装 OpenShift 沙盒容器 Operator 会导致安装失败。- 验证是否为 Approval Strategy 选择了 Automatic。Automatic 是默认值,当有新的 z-stream 发行版本可用时,自动启用对 OpenShift 沙盒容器的自动更新。
- 点 Install。
OpenShift 沙盒容器 Operator 现已安装在集群中。
验证
-
从 Web 控制台中的 Administrator 视角,导航到 Operators
Installed Operators。 - 验证 OpenShift 沙盒容器 Operator 是否在 operator 列表中列出。
3.2.2. 使用 Web 控制台为 AWS 配置 peer-pod 参数
您必须创建一个 secret 对象和 ConfigMap
,以使用 AWS 上的对等 pod 部署 OpenShift 沙盒容器。
创建 secret 对象后,您仍必须创建 KataConfig
自定义资源(CR)来使用对等 pod 部署 OpenShift 沙盒容器。
先决条件
- 在集群中安装了 OpenShift Container Platform 4.15。
-
您可以使用具有
cluster-admin
角色的用户访问集群。 - 已安装 OpenShift 沙盒容器 Operator。
3.2.2.1. 使用 Web 控制台为 AWS 创建 secret 对象
设置 AWS 访问密钥并在 secret 对象中配置网络。secret 对象用于创建 pod 虚拟机镜像,并由对等 pod 使用。
为 AWS 创建 secret 对象时,您必须设置特定的环境值。在创建 secret 对象前,您可以检索其中的一些值。必须使用 CLI 检索这些值。如需更多信息,请参阅使用 CLI 为 AWS 创建 secret 对象。
另外,在 AWS web 控制台中,您必须生成并保存以下值:
-
AWS_ACCESS_KEY_ID
-
AWS_SECRET_ACCESS_KEY
流程
-
从 Web 控制台中的 Administrator 视角,导航到 Operators
Installed Operators。 - 从 Operator 列表中选择 OpenShift 沙盒容器 Operator。
- 单击右上角的 Import 图标 (+)。
在 Import YAML 窗口中,粘贴以下 YAML 清单:
apiVersion: v1 kind: Secret metadata: name: peer-pods-secret namespace: openshift-sandboxed-containers-operator type: Opaque stringData: AWS_ACCESS_KEY_ID: "<enter value>" 1 AWS_SECRET_ACCESS_KEY: "<enter value>" 2 AWS_REGION: "<enter value>" 3 AWS_SUBNET_ID: "<enter value>" 4 AWS_VPC_ID: "<enter value>" 5 AWS_SG_IDS: "<enter value>" 6
- 点 Create。
secret 对象已创建。您可以看到它列在 Workloads
如果更新对等 pod secret,您必须重启 peerpodconfig-ctrl-caa-daemon
daemonset 以应用更改。
更新 secret 后,点 Save 应用更改。然后运行以下命令来重启 cloud-api-adaptor
pod:
$ oc set env ds/peerpodconfig-ctrl-caa-daemon -n openshift-sandboxed-containers-operator REBOOT="$(date)"
请记住,重启 daemonset 会重新创建对等 pod,它不会更新现有的 pod。
3.2.2.2. 使用 Web 控制台为 AWS 创建 peer-pod ConfigMap
您可以使用 Web 控制台为 AWS 创建 peer-pod ConfigMap
。
流程
-
从 Web 控制台中的 Administrator 视角,导航到 Operators
Installed Operators。 - 从 Operator 列表中选择 OpenShift 沙盒容器 Operator。
- 单击右上角的 Import 图标 (+)。
在 Import YAML 窗口中,粘贴以下 YAML 清单:
apiVersion: v1 kind: ConfigMap metadata: name: peer-pods-cm namespace: openshift-sandboxed-containers-operator data: CLOUD_PROVIDER: "aws" VXLAN_PORT: "9000" PODVM_INSTANCE_TYPE: "t3.medium" 1 PODVM_INSTANCE_TYPES: "t2.small,t2.medium,t3.large" 2 PROXY_TIMEOUT: "5m"
- 点 Create。
ConfigMap
对象已创建。您可以看到它在 Workloads
如果更新 peer pod 配置映射,您必须重启 peerpodconfig-ctrl-caa-daemon
daemonset 以应用更改。
更新配置映射后,点 Save 应用更改。然后运行以下命令来重启 cloud-api-adaptor
pod:
$ oc set env ds/peerpodconfig-ctrl-caa-daemon -n openshift-sandboxed-containers-operator REBOOT="$(date)"
请记住,重启 daemonset 会重新创建对等 pod,它不会更新现有的 pod。
创建 KataConfig
CR 后,您可以使用 AWS 上的对等 pod 运行 OpenShift 沙盒容器。
3.2.3. 使用 Web 控制台为 Azure 配置 peer-pod 参数
您必须创建一个 secret 对象和 ConfigMap
,以便使用 Microsoft Azure 上的对等 pod 部署 OpenShift 沙盒容器。
创建 secret 对象后,您仍必须创建 KataConfig
自定义资源(CR)来使用对等 pod 部署 OpenShift 沙盒容器。
先决条件
- 在集群中安装了 OpenShift Container Platform 4.15。
-
您可以使用具有
cluster-admin
角色的用户访问集群。 - 已安装 OpenShift 沙盒容器 Operator。
3.2.3.1. 使用 Web 控制台为 Azure 创建 secret 对象
设置 Azure 访问密钥并在 secret 对象中配置网络。secret 对象用于创建 pod 虚拟机镜像,并由对等 pod 使用。
为 Azure 创建 secret 对象时,您必须设置特定的环境值。您可以在创建 secret 对象前检索这些值。必须使用 CLI 检索这些值。如需更多信息,请参阅使用 CLI 为 Azure 创建 secret 对象。
流程
-
从 Web 控制台中的 Administrator 视角,导航到 Operators
Installed Operators。 - 从 Operator 列表中选择 OpenShift 沙盒容器 Operator。
- 单击右上角的 Import 图标 (+)。
在 Import YAML 窗口中,粘贴以下 YAML 清单:
apiVersion: v1 kind: Secret metadata: name: peer-pods-secret namespace: openshift-sandboxed-containers-operator type: Opaque stringData: AZURE_CLIENT_ID: "<enter value>" 1 AZURE_CLIENT_SECRET: "<enter value>" 2 AZURE_TENANT_ID: "<enter value>" 3 AZURE_SUBSCRIPTION_ID: "<enter value>" 4 AZURE_REGION: "<enter value>" 5 AZURE_RESOURCE_GROUP: "<enter value>" 6
- 点 Create。
secret 对象已创建。您可以看到它列在 Workloads
如果更新对等 pod secret,您必须重启 peerpodconfig-ctrl-caa-daemon
daemonset 以应用更改。
更新 secret 后,点 Save 应用更改。然后运行以下命令来重启 cloud-api-adaptor
pod:
$ oc set env ds/peerpodconfig-ctrl-caa-daemon -n openshift-sandboxed-containers-operator REBOOT="$(date)"
请记住,重启 daemonset 会重新创建对等 pod,它不会更新现有的 pod。
3.2.3.2. 使用 Web 控制台为 Azure 创建 peer-pod ConfigMap
您可以使用 Web 控制台为 Azure 创建 peer-pod ConfigMap
。
流程
-
从 Web 控制台中的 Administrator 视角,导航到 Operators
Installed Operators。 - 从 Operator 列表中选择 OpenShift 沙盒容器 Operator。
- 单击右上角的 Import 图标 (+)。
在 Import YAML 窗口中,粘贴以下 YAML 清单:
apiVersion: v1 kind: ConfigMap metadata: name: peer-pods-cm namespace: openshift-sandboxed-containers-operator data: CLOUD_PROVIDER: "azure" VXLAN_PORT: "9000" AZURE_INSTANCE_SIZE: "Standard_B2als_v2" 1 AZURE_INSTANCE_SIZES: "Standard_B2als_v2,Standard_D2as_v5,Standard_D4as_v5,Standard_D2ads_v5" 2 AZURE_SUBNET_ID: "<enter value>" 3 AZURE_NSG_ID: "<enter value>" 4 PROXY_TIMEOUT: "5m" DISABLECVM: "true"
- 点 Create。
ConfigMap
的对象已创建。您可以看到它在 Workloads
如果更新 peer pod 配置映射,您必须重启 peerpodconfig-ctrl-caa-daemon
daemonset 以应用更改。
更新配置映射后,点 Save 应用更改。然后运行以下命令来重启 cloud-api-adaptor
pod:
$ oc set env ds/peerpodconfig-ctrl-caa-daemon -n openshift-sandboxed-containers-operator REBOOT="$(date)"
请记住,重启 daemonset 会重新创建对等 pod,它不会更新现有的 pod。
3.2.3.3. 使用 Web 控制台为 Azure 创建 SSH 密钥 secret 对象
您必须创建一个 SSH 密钥 secret 对象才能使用 Azure 的对等 pod。如果您还没有创建对象的 SSH 密钥,则必须使用 CLI 生成对象。更多信息,请参阅
流程
-
从 web 控制台中的 Administrator 视角,进入到 Workloads
Secrets。 - 在左侧的 Secrets 窗口中,验证您是否位于 openshift-sandboxed-containers-operator 项目中。
- 点 Create,从列表中选择 Key/value secret。
-
在 Secret name 字段中,输入
ssh-key-secret
。 -
在 Key 字段中,输入
id_rsa.pub
。 - 在 Value 字段中,粘贴您的公共 SSH 密钥。
- 点 Create。
SSH 密钥 secret 对象已创建。您可以看到它列在 Workloads
创建 KataConfig
CR 后,您可以使用 Azure 上的对等 pod 运行 OpenShift 沙盒容器。
3.2.4. 在 web 控制台中创建 KataConfig 自定义资源
您必须创建一个 KataConfig
自定义资源(CR),以便在集群节点上启用将 kata-remote
作为 RuntimeClass
安装。
创建 KataConfig
CR 会自动重启 worker 节点。重启可能需要 10 到 60 分钟。妨碍重启时间的因素如下:
- 带有更多 worker 节点的大型 OpenShift Container Platform 部署。
- 激活 BIOS 和 Diagnostics 实用程序。
- 在硬盘而不是 SSD 上部署。
- 在物理节点上部署,如裸机,而不是在虚拟节点上部署。
- CPU 和网络较慢。
先决条件
- 在集群中安装了 OpenShift Container Platform 4.15。
-
您可以使用具有
cluster-admin
角色的用户访问集群。 - 已安装 OpenShift 沙盒容器 Operator。
默认情况下,对等 pod 的 Kata 安装在所有 worker 节点上。如果要在特定节点上安装 kata-remote
作为 RuntimeClass
,您可以在这些节点上添加标签,然后在创建时在 KataConfig
CR 中定义标签。
流程
-
从 Web 控制台中的 Administrator 视角,导航到 Operators
Installed Operators。 - 从 Operator 列表中选择 OpenShift 沙盒容器 Operator。
- 在 KataConfig 选项卡中,点 Create KataConfig。
在 Create KataConfig 页面中,输入以下详情:
-
名称 :输入
KataConfig
资源的名称。默认情况下,名称定义为example-kataconfig
。 -
Labels (可选):输入任何相关的、识别到
KataConfig
资源的属性。每个标签代表一个键值对。 -
checkNodeEligibility
(可选,不与对等 pod 相关的):选择此复选框以使用 Node Feature Discovery Operator (NFD)检测节点资格以作为RuntimeClass
运行kata
。如需更多信息,请参阅"检查集群节点是否有资格运行 OpenShift 沙盒容器"。 -
enablePeerPods
(对于对等 pod):选择此复选框来启用对等 pod,并在公有云环境中使用 OpenShift 沙盒容器。 KataConfigPoolSelector
:默认情况下,kata-remote
在所有节点上作为RuntimeClass
安装。如果要在所选节点上安装kata-remote
作为RuntimeClass
,您必须添加一个 matchExpression :-
展开
kataConfigPoolSelector
区域。 -
在
kataConfigPoolSelector
中,展开 matchExpressions。这是标签选择器要求列表。 - 点 Add matchExpressions。
- 在 key 字段中,添加选择器应用到的标签键。
-
在 operator 字段中,添加键与标签值的关系。有效的运算符为
In
、NotIn
、Exists
和DoesNotExist
。 - 展开 values 区域,然后点 Add value。
-
在 Value 字段中,为 key 标签值输入
true
或false
。
-
展开
-
loglevel
:定义为将kata-remote
作为RuntimeClass
运行的节点检索的日志数据级别。如需更多信息,请参阅"收集 OpenShift 沙盒容器数据"。
-
名称 :输入
- 点 Create。
创建新的 KataConfig
CR,并开始在 worker 节点上安装 kata-remote
作为 RuntimeClass
。等待安装完成,以及 worker 节点重新引导,然后继续下一步。
运行 CR 时,会创建虚拟机镜像。镜像创建通过云提供商完成,并且可以使用其他资源。
OpenShift 沙盒容器仅将 kata-remote
安装为集群上的辅助可选运行时,而不是作为主要运行时安装。
验证
-
在 KataConfig 选项卡中,选择新的
KataConfig
CR。 - 在 KataConfig 页面中,选择 YAML 选项卡。
监控 status 字段。
每次有更新时都会出现一条消息。点 Reload 查看更新的
KataConfig
CR。status 字段具有 条件和 kataNodes 子字段。kataNodes 子字段是节点列表的集合,每个节点都列出
kata
安装的特定状态的节点。当 kataNodes 下的所有 worker 都被列为,且条件
InProgress
为False
时,它代表集群中安装kata
。如需更多信息,请参阅"安装和卸载转换"。
3.2.5. 使用 Web 控制台在沙盒容器中部署对等 pod 的工作负载
OpenShift 沙盒容器将 Kata 安装为集群上的辅助、可选运行时,而不是主运行时。
要使用沙盒容器中的对等 pod 部署 pod 模板工作负载,您必须手动将 kata-remote
作为 runtimeClassName
添加到工作负载 YAML 文件中。
您还可以通过向 YAML 文件添加注解,定义是否应该使用默认实例大小部署工作负载,或者键入之前在 ConfigMap
中定义的类型。实例大小或实例类型的使用取决于您的云供应商。如果您不想手动定义实例大小或类型,您必须添加注解来定义根据可用内存定义自动实例大小或类型的使用。
先决条件
- 在集群中安装了 OpenShift Container Platform 4.15。
-
您可以使用具有
cluster-admin
角色的用户访问集群。 - 已安装 OpenShift 沙盒容器 Operator。
-
您已创建了一个 secret 对象和对云供应商唯一的 peer-pod
ConfigMap
。 -
您已创建了
KataConfig
自定义资源 (CR)。
流程
- 从 web 控制台中的 Administrator 视角,展开 Workloads 并选择您要创建的工作负载类型。
- 在工作负载页面中,点击以创建工作负载。
-
在工作负载的 YAML 文件中,在列出容器的 spec 字段中,添加
runtimeClassName: kata-remote
。 在工作负载的 YAML 文件中,添加一个注解来定义是否使用默认实例大小或类型,或自动实例大小或类型。实例大小用于特定的云提供商,而实例类型则用于其他云提供商。
对于特定实例大小类型,添加以下注解:
io.katacontainers.config.hypervisor.machine_type: <instance type/instance size>
定义工作负载应使用的实例大小或类型。在为对等 pod 创建
ConfigMap
时,预定义的这些默认大小或类型。从其中之一选择。对于自动实例大小或类型,添加以下注解:
io.katacontainers.config.hypervisor.default_vcpus: <vcpus> io.katacontainers.config.hypervisor.default_memory: <memory>
定义可供工作负载使用的内存量。工作负载将根据可用内存量在自动实例大小或类型上运行。
Pod
对象示例apiVersion: v1 kind: Pod metadata: name: hello-openshift labels: app: hello-openshift annotations: io.katacontainers.config.hypervisor.machine_type: Standard_DC4as_v5 1 spec: runtimeClassName: kata-remote containers: - name: hello-openshift image: quay.io/openshift/origin-hello-openshift ports: - containerPort: 8888 securityContext: privileged: false allowPrivilegeEscalation: false runAsNonRoot: true runAsUser: 1001 capabilities: drop: - ALL seccompProfile: type: RuntimeDefault
- 1
- 本例使用之前定义的实例大小用于使用 Azure 的对等 pod。使用 AWS 的对等 pod 使用实例类型。
- 点击 Save。
OpenShift Container Platform 创建工作负载并开始调度它。