机密容器部署
- 参考环境配置完成BMC、BIOS和TMM固件烧写,virtCCA TEE license安装,以及BIOS菜单中配置TEE支持。
- 参考部署核心组件确保host kernel满足版本要求并添加内核启动参数virtcca_cvm_host=1(使用机密容器无需安装libvirt、qemu和edk2)。
完成步骤1和步骤2后基础virtCCA机密计算环境已使能,执行如下命令后回显中有版本号即说明使能成功。
dmesg | grep -i tmi

- 部署cc-operator-controller-manager。
wget https://raw.gitcode.com/openeuler/virtCCA_sdk/raw/master/kata-v3.15.0/conf/cc-operator.yaml kubectl apply -f cc-operator.yaml
- 部署CcRuntime。
- 获取virtCCA的CcRuntime部署yaml配置文件。
wget https://raw.gitcode.com/openeuler/virtCCA_sdk/raw/master/kata-v3.15.0/conf/virtcca-kata-deploy.yaml
- 修改yaml配置文件中的label。
matchLabels字段可通过kubectl get nodes --show-labels查看,修改为对应label,具体以下图为例,node-role.kubernetes.io/worker表示键,worker为值,和matchLabels字段下键值对保持一致。

payloadImage字段指定了kata-deploy镜像路径,可直接使用默认镜像:swr.cn-north-4.myhuaweicloud.com/kunpeng-ai/virtcca-kata-deploy:latest。

- 镜像拉取方式修改为host pull。
sed -i '/- name: kata-qemu-virtcca/{n;s/pulltype: .*/pulltype: ""/;n;s/snapshotter: .*/snapshotter: ""/}' virtcca-kata-deploy.yaml - 启动deploy部署。
kubectl apply -f virtcca-kata-deploy.yaml
创建成功后confidential-containers-system命名空间下有一个cc-operator-controller和两个DaemonSet管理的Pod。
kubectl get pod -n confidential-containers-system -owide

如果部署confidential-container-operator失败,且operator Pod日志中的关键错误为“Get "https://x.x.x.x:443/api/v1": dial tcp x.x.x.x:443: i/o timeout”时,可按照以下思路进行排查。
- 确认组件和iptables状态,网络组件是DaemonSet,确认当前系统默认iptables后端。
kubectl -n kube-system get ds -o wide
- 显式设置Calico使用nft后端。
kubectl -n kube-system set env daemonset/calico-node FELIX_IPTABLESBACKEND=NFT kubectl -n kube-system rollout status daemonset/calico-node --timeout=180s
- 清理legacy表残留规则,legacy filter默认策略设为ACCEPT,并验证legacy清理状态。
- 重建cc-operator Pod并验证恢复。
kubectl delete pod -n confidential-containers-system -l control-plane=controller-manager kubectl -n confidential-containers-system wait --for=condition=Ready pod -l control-plane=controller-manager --timeout=180s kubectl -n confidential-containers-system get pod -o wide
- 确认组件和iptables状态,网络组件是DaemonSet,确认当前系统默认iptables后端。
- 获取virtCCA的CcRuntime部署yaml配置文件。
- K8s集群中已注册virtCCA对应的RuntimeClass。
kubectl get runtimeclass

- 修改“/opt/kata/share/defaults/kata-containers/configuration-qemu-virtcca.toml”,配置文件,配置共享文件系统协议修改为virtio-fs,默认vcpu数量修改为2,默认内存大小修改为3072M,可根据实际需求针对性调整。
sed -i 's/shared_fs = "none"/shared_fs = "virtio-fs"/; s/default_vcpus = 1/default_vcpus = 2/; s/default_memory = 2048/default_memory = 3072/' /opt/kata/share/defaults/kata-containers/configuration-qemu-virtcca.toml

- 重启containerd。
systemctl restart containerd
- 创建机密容器,通过部署一个测试Pod,验证鲲鹏机密容器运行时已正确配置并生效。
- 创建配置文件。
vi ./test-kata-qemu-virtcca.yaml
- 按“i”进入编辑模式,输入以下内容。
apiVersion: v1 kind: Pod metadata: name: test-kata-qemu-virtcca annotations: io.containerd.cri.runtime-handler: "kata-qemu-virtcca" io.katacontainers.config.hypervisor.kernel_params: "agent.debug_console agent.log=debug" spec: runtimeClassName: kata-qemu-virtcca terminationGracePeriodSeconds: 5 containers: - name: box-1 image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/busybox:latest-linuxarm64 imagePullPolicy: Always command: - sh tty: true - 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
- 读取yaml配置文件创建Pod。
kubectl apply -f test-kata-qemu-virtcca.yaml
- 查看Pod集群状态。
kubectl get pod -A
如下图所示,看到test-kata-qemu-virtcca Pod状态为Running即为成功。

- 创建配置文件。
父主题: 基于openFuyao的快捷部署