容器安全FAQ

本文介绍应用容器安全的常见问题及解决方案。

为什么容器之间的网络不通?

您可以参考以下步骤解决容器服务Kubernetes集群由于安全组导致网络不通的问题。

  • 入方向授权对象Pod 网络CIDR,且协议类型全部的规则已被删除。

    1. 登录容器服务管理控制台,在左侧导航栏选择集群

    2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择集群信息

    3. 集群信息页面,选择集群资源页签,单击安全组右侧的链接进入ECS控制台的安全组页面。

    4. 安全组页面的入方向页签下,单击手动添加

    5. 填写协议类型端口范围授权对象,并单击保存

      说明
      • 协议类型请选择全部

      • 授权对象填写为Pod的网段地址。

        Pod的网段地址(Pod网络CIDR)可在容器服务管理控制台集群详细信息页面,集群信息区域查看。集群信息

        授权对象的设置,可参见安全组应用案例

      入方向授权对象为Pod网络CIDR,且协议类型全部的规则已添加。

  • 新增ECS实例的安全组与集群所在的安全组不同。

    1. 登录容器服务管理控制台,在左侧导航栏选择集群

    2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择集群信息

    3. 集群信息页面,选择集群资源页签,查看并记录安全组右侧的安全组ID。

    4. 将目标ECS实例加入上一步查到的集群安全组中。将ECS实例加入指定安全组的相关操作,请参见在实例页面进行安全组关联的管理

如何给Kubernetes集群指定安全组?

当前暂不支持给Kubernetes集群指定安全组。但是创建Kubernetes集群时,容器服务ACK会自动创建一个默认安全组,您可以通过修改默认安全组的规则,达到指定安全组的效果。

集群审计功能是否可以取消或者在创建集群后再部署?

可以。具体操作,请参见使用集群API Server审计功能

Kubernetes专有版本集群如何更换证书有效期,以及如何更换各个组件的证书?

Pod无法创建,报错详情:no providers available to validate pod request

Secret在新建的Namespace下面无法使用

Secret是命名空间级别的,您需要在新建的Namespace下新建Secret。

无法挂载default-token

无法挂载default-token,具体报错信息如下:

Normal Scheduled 13m default-scheduler Successfully assigned dev/alibaba-demo-67fcdbfb8-zklnp to cn-hangzhou.10.7.3.16  Warning FailedMount 13m (x2 over 13m) kubelet, cn-hangzhou.10.7.3.16 MountVolume.SetUp failed for volume 'default-token-8twx9' : mount failed: exit status 1 Mounting command: systemd-run Mounting arguments: --description=Kubernetes transient mount for /var/lib/kubelet/pods/62d39b35-9a4d-11ea-9870-c24d56a0e904/volumes/kubernetes.io~secret/default-token-8twx9 --scope -- mount -t tmpfs tmpfs /var/lib/kubelet/pods/62d39b35-9a4d-11ea-9870-c24d56a0e904/volumes/kubernetes.io~secret/default-token-8twx9 Output: Failed to start transient scope unit: Argument list too long  Warning FailedCreatePodContainer 3m40s (x49 over 13m) kubelet, cn-hangzhou.10.7.3.16 unable to ensure pod container exists: failed to create container for [kubepods burstable pod62d39b35-9a4d-11ea-9870-c24d56a0e904] : Argument list too long

Systemd版本太老旧。

  • 升级Systemd,具体操作,请参见systemd

  • 执行sudo systemctl daemon-reload命令重启清零。更多信息,请参见systemd

审计日志查询方法

RBAC相关变更操作的审计日志查询方法

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择集群信息

  3. 集群信息页面,选择集群资源页签,单击日志服务Project右侧的链接。

  4. 日志存储 > 日志库页面,选择对应的 audit-<cluster_id>,单击页面右上角的查询 / 分析

  5. 在页面顶端的下拉列表中,选择需要查询的时间范围,例如最近15分钟。

    说明

    时间段覆盖的范围是正常到出现问题时的这段时间,例如3天、7天或15天。

  6. 查询 / 分析文本框中,输入以下SQL查询命令,然后单击页面右上角的查询 / 分析

    requestURI: "rbac.authorization.k8s.io" not (verb: get or verb: watch) 
  7. 单击45图标,选择下载日志,在弹出的日志下载对话框,选中通过Cloud Shell下载,单击确认

ConfigMap相关变更操作的审计日志查询方法

查询 / 分析文本框中输入以下SQL查询命令,然后单击查询 / 分析。更多操作,请参见审计日志查询方法

requestURI: "configmaps" and <configmap_name> not (verb: get or verb: watch or verb: list) 
说明

上述查询命令在查询时,需要将<configmap_name>替换为实际的ConfigMap名称。

Deployment的Pod扩缩容相关操作的审计日志查询方法

查询 / 分析文本框中输入以下SQL查询命令,然后单击查询 / 分析。更多操作,请参见审计日志查询方法

requestURI: deployments and (verb: update or verb: patch) and replicas and deployments and <deployment_name> not deployment-controller
说明

上述查询命令在查询时,需要将<deployment_name>替换为实际的Deployment名称。