
# CCE节点kubelet和runtime组件路径与社区原生配置差异说明
为保证节点的系统稳定性，CCE将Kubernetes和容器运行时的相关组件单独存储在数据盘中。其中Kubernetes使用"/mnt/paas/kubernetes"目录，容器运行时使用/"mnt/paas/runtime"目录，并使用软链接的方式与社区默认路径保持一致。
#### CCE节点kubelet和runtime组件默认路径与社区原生的配置差异
| kubelet和runtime组件路径名称 | Kubernetes原生路径      | CCE节点上的路径                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|
| kubelet的启动参数root-dir  | /var/lib/kubelet    | /mnt/paas/kubernetes/kubelet                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| kubelet的路径            | /var/lib/kubelet    | /mnt/paas/kubernetes/kubelet 同时创建了/var/lib/kubelet -\> /mnt/paas/kubernetes/kubelet的软链接                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| 容器运行时（docker）的路径      | /var/lib/docker     | - [数据盘空间分配](https://support.huaweicloud.com/usermanual-cce/cce_10_0341.html)设置为"共享磁盘空间"： /mnt/paas/runtime 同时创建了/var/lib/docker -\> /mnt/paas/runtime的软链接   - [数据盘空间分配](https://support.huaweicloud.com/usermanual-cce/cce_10_0341.html)设置为"指定磁盘空间"：与Kubernetes原始路径保持一致，即/var/lib/docker  - 系统盘混合存储：与Kubernetes原始路径保持一致，即/var/lib/docker               |
| Docker日志存储的路径         | /var/log/pods       | /var/log/pods                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 容器运行时（containerd）的路径  | /var/lib/containerd | - [数据盘空间分配](https://support.huaweicloud.com/usermanual-cce/cce_10_0341.html)设置为"共享磁盘空间"： /mnt/paas/runtime 同时创建了/var/lib/containerd -\> /mnt/paas/runtime的软链接   - [数据盘空间分配](https://support.huaweicloud.com/usermanual-cce/cce_10_0341.html)设置为"指定磁盘空间"：与Kubernetes原始路径保持一致，即/var/lib/containerd  - 系统盘混合存储：与Kubernetes原始路径保持一致，即/var/lib/containerd   |
| containerd日志存储的路径     | /var/log/pods       | /var/lib/containerd/container_logs 同时创建了/var/log/pods -\> /var/lib/containerd/container_logs的软链接                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
CCE节点kubelet和runtime默认路径与社区原生的配置差异可能带来以下影响：
- 软链文件在容器挂载场景下，无法访问软链文件指向的真实路径。 例如：将容器通过hostPath的方式将主机的/var/log路径挂载进容器/mnt/log路径，此时在容器内看到/mnt/log/pods是一个异常的软链文件，无法访问/var/log/pods下的真实文件内容。
  建议将真实的文件路径挂载进容器内，避免软链导致的文件读取失败。
  
- kubelet的root-dir启动参数（/mnt/paas/kubernetes/kubelet）与社区路径（/var/lib/kubelet）不一致，使用第三方CSI插件的容器挂载路径为社区路径，会导致文件挂载不生效。 例如，vault开源三方插件在使用secrets-store-csi-driver挂载密钥时，如果插件的root-dir地址与CCE配置路径不一致（插件默认value值与社区地址一致：/var/lib/kubelet）会导致容器内无法获取到vault的密钥。
  这是因为CSI插件依赖挂载传播，将卷挂载到对应容器中。kubelet在挂卷的CSI请求中会带有与kubelet启动参数root-dir相关的挂载路径（/mnt/paas/kubernetes/kubelet/pods/{podID}/volume/...）。当CSI容器将卷挂载在kubelet CSI请求的挂载路径上，而此挂载路径与主机路径不相关时，挂载传播将失效。例如，CSI容器将主机的/var/lib/kubelet路径挂载进容器的/var/lib/kubelet路径，因此CSI容器内的/mnt/paas/kubernetes/kubelet/pods/{podID}/volume/...将与主机路径毫不相关。
  建议修改CSI插件中的root-dir地址，与CCE当前节点kubelet的root-dir地址保持一致。
  
 
#### CCE节点kubelet和runtime组件默认路径由软链创建方式切换挂载绑定说明
为更好的兼容第三方开源软件，在v1.23.18-r0、v1.25.13-r0、v1.27-10-r0、v1.28.8-r0、v1.29.4-r0及以上集群版本中，支持通过集群或节点池配置将软链方式修改为挂载，且节点池配置优先级高于集群配置。
当前仅提供API方式创建：
- 创建集群API示例如下，其余参数配置说明请参见[创建集群](https://support.huaweicloud.com/api-cce/cce_02_0236.html)。
  ```
  POST /api/v3/projects/{project_id}/clusters
  {
         "kind": "Cluster",
         "apiVersion": "v3",
         "metadata": {
                "name": "xxxxxxxxxx",
                …
         },
         "spec": {
                …
                "configurationsOverride": [
                       {
                              "name": "node-config",
                              "configurations": [
                                     {
                                            "name": "enable-mount-bind",
                                            "value": true
                                     }
                              ]
                       }
                ],
                …
         }
  }
  ```
  
- 节点池创建示例如下，其余参数配置说明请参见[创建节点池](https://support.huaweicloud.com/api-cce/cce_02_0354.html)。
  ```
  {
         "kind": "NodePool",
         "apiVersion": "v3",
         "metadata": {
                "name": "xxxxxxxxx",
                …
         },
         "spec": {
                …
                "nodeTemplate": {
                       "configurationsOverride": [{
                              "name": "node-config",
                              "configurations": [{
                                     "name": "enable-mount-bind",
                                     "value": true
                              }]
                       }],
                       …
                }
         }
  }
  ```
  
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
CCE节点kubelet和runtime组件默认路径由软链创建方式切换挂载绑定的影响如下：
- 软链改挂载绑定后，源目录保持不变，目标软链文件将被替换为目录挂载。能够保证软链路径挂载的容器在改为挂载绑定后，也能够正常访问，无需额外适配。
- 链改挂载绑定后，在到源目录和目标目录会存在两个相同的路径结构。并且在公共父目录下查找文件时，会在不同路径下查询到同一个文件。 例如：/var/lib/kubelet 和 /mnt/paas/kubernetes/kubelet
  ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001971946474.png "点击放大")
  
- 对应挂载绑定的源目的路径上，将会有两条相同的挂载信息。如业务代码中依赖挂载信息判断，请评估对您的影响。 例如：
  ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002451232721.png "点击放大")
  
  
 
