开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

机密容器部署

  1. 参考环境配置完成BMC、BIOS和TMM固件烧写,virtCCA TEE license安装,以及BIOS菜单中配置TEE支持。
  2. 参考部署核心组件确保host kernel满足版本要求并添加内核启动参数virtcca_cvm_host=1(使用机密容器无需安装libvirt、qemu和edk2)。

    完成步骤1和步骤2后基础virtCCA机密计算环境已使能,执行如下命令后回显中有版本号即说明使能成功。

    dmesg | grep -i tmi

  3. 部署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
  4. 部署CcRuntime。
    1. 获取virtCCA的CcRuntime部署yaml配置文件。
      wget https://raw.gitcode.com/openeuler/virtCCA_sdk/raw/master/kata-v3.15.0/conf/virtcca-kata-deploy.yaml
    2. 修改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。

    3. 镜像拉取方式修改为host pull。
      sed -i '/- name: kata-qemu-virtcca/{n;s/pulltype: .*/pulltype: ""/;n;s/snapshotter: .*/snapshotter: ""/}' virtcca-kata-deploy.yaml
    4. 启动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
  5. K8s集群中已注册virtCCA对应的RuntimeClass。
    kubectl get runtimeclass

  6. 修改“/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

  7. 重启containerd。
    systemctl restart containerd
  8. 创建机密容器,通过部署一个测试Pod,验证鲲鹏机密容器运行时已正确配置并生效。
    1. 创建配置文件。
      vi ./test-kata-qemu-virtcca.yaml
    2. 按“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
    3. 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
    4. 读取yaml配置文件创建Pod。
      kubectl apply -f test-kata-qemu-virtcca.yaml
    5. 查看Pod集群状态。
      kubectl get pod -A

      如下图所示,看到test-kata-qemu-virtcca Pod状态为Running即为成功。