3.3. 使用 CLI 部署 OpenShift 沙盒容器 Operator
您可以安装和部署 Operator,并通过 CLI 查看工作负载。
3.3.1. 使用 CLI 安装 OpenShift 沙盒容器 Operator 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Container Platform CLI 安装 OpenShift 沙盒容器 Operator。
先决条件
- 已在集群中安装了 OpenShift Container Platform 4.8。
-
已安装 OpenShift CLI(
oc)。 -
您可以使用具有
cluster-admin角色的用户访问集群。 您已订阅了 OpenShift 沙盒容器目录。
注意订阅 OpenShift 沙盒容器目录为
openshift-sandboxed-containers-operator命名空间提供了对 OpenShift 沙盒容器 Operator 的访问权限。
流程
创建一个包含以下清单的 YAML 文件:
apiVersion: v1 kind: Namespace metadata: name: openshift-sandboxed-containers-operator --- apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-sandboxed-containers-kataconfig-group namespace: openshift-sandboxed-containers-operator spec: targetNamespaces: - openshift-sandboxed-containers-operator --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: sandboxed-containers-operatorhub namespace: openshift-sandboxed-containers-operator spec: source: redhat-operators sourceNamespace: openshift-marketplace name: sandboxed-containers-operator startingCSV: sandboxed-containers-operator.v1.0.0 channel: "preview-1.0" approval: "Automatic"注意使用 preview-1.0 频道可确保安装与 OpenShift Container Platform 版本兼容的 OpenShift 沙盒容器版本。
为 OpenShift 沙盒容器创建所需的
Namespace、OperatorGroup和Subscription对象:$ oc create -f <file name>.yaml确保正确安装 Operator:
$ oc get csv -n openshift-sandboxed-containers-operator输出示例
NAME DISPLAY VERSION REPLACES PHASE openshift-sandboxed-containers openshift-sandboxed-containers-operator 1.0.0 <csv-of-previous-version> Succeeded查看可用的部署:
$ oc get deployments -n openshift-sandboxed-containers-operator输出示例
NAME READY UP-TO-DATE AVAILABLE AGE openshift-sandboxed-containers-operator 1/111 9m48s
验证
验证 Operator 是否正在运行,以便您可以创建
KataConfig资源来触发安装。$ oc get deployments -n openshift-sandboxed-containers-operator输出示例
NAME READY UP-TO-DATE AVAILABLE AGE openshift-sandboxed-containers-controller-manager 1/1 1 1 40d
3.3.1.1. 触发 Kata 运行时安装 复制链接链接已复制到粘贴板!
您必须创建一个 KataConfig 自定义资源(CR)来触发 OpenShift 沙盒容器 Operator 以执行以下操作:
-
在 RHCOS 节点上安装所需的 RHCOS 扩展,如 QEMU 和
kata-containers。 - 确保运行时 CRI-O 配置了正确的 Kata 运行时处理程序。
-
创建带有必要配置的
RuntimeClass自定义资源,用于虚拟化和所需额外进程导致的额外开销。
先决条件
- 已在集群中安装了 OpenShift Container Platform 4.8。
-
已安装 OpenShift CLI(
oc)。 -
您可以使用具有
cluster-admin角色的用户访问集群。
流程
创建
KataConfig资源:$ oc create -f <file name>.yaml示例
apiVersion: kataconfiguration.openshift.io/v1 kind: KataConfig metadata: name: cluster-kataconfig监控安装进度。
您可以描述
KataConfig安装:$ oc describe kataconfig- 验证状态中的 Completed nodes 字段。
- 如果 Completed 节点的值与 worker 节点的数量匹配,则代表安装已完成。该状态还包含安装完成的节点的列表。
您可以通过观察
KataConfig资源来检查安装的进度:$ watch -n 10 oc describe kataconfig另外,您可以检查
KataConfig资源的状态。这可以通过运行oc get KataConfig <name> -oyaml并检查输出中的status字段来完成。
Kata 运行时现在在集群中安装,并可作为辅助运行时使用。验证您是否在集群中为 Kata 创建了 RuntimeClass。
OpenShift 沙盒容器仅将 Kata 安装为集群上的辅助可选运行时,而不作为主要运行时安装。
验证
您可以通过运行以下命令监控
KataConfig自定义资源的值:$ watch oc describe KataConfig cluster-kataconfig
3.3.1.2. 为 OpenShift 沙盒容器选择节点 复制链接链接已复制到粘贴板!
您可以选择在特定 worker 上安装 Kata 运行时。
先决条件
- 已在集群中安装了 OpenShift Container Platform 4.8。
- 已安装 OpenShift CLI(oc)。
-
您可以使用具有
cluster-admin角色的用户访问集群。
流程
确定您要用来选择节点的标签。在本例中,使用标签选择作为候选者,以便在 OpenShift 沙盒容器工作负载上运行。如果节点存在,则会选择它们。
要将标签应用到节点,请运行以下命令:
$ oc label node <worker_node_name> <label>=<value>这会使用
<label>标签标记您的 worker 节点,该标签值为<value>。
要添加标签选择器,请编辑
KataConfig自定义资源(CR):$ oc edit kataconfig示例
apiVersion: kataconfiguration.openshift.io/v1 kind: KataConfig metadata: name: cluster-kataconfig spec: kataConfigPoolSelector: matchLabels: custom-kata-machine-pool: 'true'
验证
您可以检查
machine-config-pool对象中的节点是否经历配置更新。如果使用默认节点,您可以运行以下命令来监控
machine-config-pool资源:$ watch oc get mcp worker如果使用所选节点,您可以运行以下命令监控
machine-config-pool资源:$ watch oc get mcp kata-oc
您可以运行
watch oc describe kataconfig cluster-kataconfig来显示节点上sandboxed-containers扩展失败的信息。这些信息从machine-config-pool对象的状态收集。您可以运行以下命令查看信息:$ oc describe mcp <machine-config-pool>
3.3.1.3. 调度 OpenShift 沙盒容器工作负载 复制链接链接已复制到粘贴板!
您可以调度工作负载在 OpenShift 沙盒容器中运行。
先决条件
- 已在集群中安装了 OpenShift Container Platform 4.8。
-
已安装 OpenShift CLI(
oc)。 -
您可以使用具有
cluster-admin角色的用户访问集群。
流程
将
runtimeClassName: kata添加到任何 pod 模板化的资源:-
Pod对象 -
ReplicaSet对象 -
ReplicationController对象 -
StatefulSet对象 -
Deployment对象 -
deploymentConfig对象
-
Pod 对象示例
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
runtimeClassName: kata
Deployment 对象示例
apiVersion: apps/v1
kind: Deployment
metadata:
name: mypod
labels:
app: mypod
spec:
replicas: 3
selector:
matchLabels:
app: mypod
template:
metadata:
labels:
app: mypod
spec:
runtimeClassName: kata
containers:
- name: mypod
image: myImage
当创建了带有 runtimeClassName: kata 的 pod 模板化的资源后,OpenShift Container Platform 开始将工作负载调度到启用了 OpenShift 沙盒的容器。如果没有使用选择器,则默认设置为所有 worker 节点。您的工作负载在 OpenShift 沙盒容器中运行。
3.3.2. 通过 CLI 查看 OpenShift 沙盒容器工作负载 复制链接链接已复制到粘贴板!
您可以从 CLI 查看用于工作负载的 pod 的 runtimeClass。
先决条件
- 已在集群中安装了 OpenShift Container Platform 4.8。
-
已安装 OpenShift CLI(
oc)。 -
您可以使用具有
cluster-admin角色的用户访问集群。
流程
检查 pod 上的
runtimeClassName字段,以查看 OpenShift 沙盒容器中运行的 pod 与普通容器。-
在节点上,每个 pod 具有对应的
qemu进程。
-
在节点上,每个 pod 具有对应的
验证
您可以检查
openshift-sandboxed-containers-operator控制器 pod 的日志,以查看其正在运行的步骤的详细信息。您可以运行以下命令来检索控制器 pod 的名称:
$ oc get pods -n openshift-sandboxed-containers-operator | grep openshift-sandboxed-containers-operator-controller-manager这可让您监控该 pod 的容器管理器的日志。