33.5. 启用不安全 sysctl
集群管理员可在非常特殊的情况下允许某些不安全 sysctl,比如高性能或实时应用程序性能优化。
如果要使用不安全 sysctl,集群管理员必须在节点上单独启用它们。它们只能启用命名空间 sysctl。
您可以通过在 forbiddenSysctls
和 allowedUnsafeSysctls
字段中指定 Security Context Constraints 字段中的 sysctl 模式列表来控制 pod 中可以设置哪些 sysctl。
-
forbiddenSysctls
选项用来排除特定 sysctls。 -
allowedUnsafeSysctls
选项用来控制特定的需求,如高性能或实时应用程序调整。
警告
由于其不安全特性,使用不安全 sysctl 的风险是自带的,可能会导致严重问题,如容器、资源短缺或完全节点中断等严重问题。
在适当的节点配置映射文件的
kubeletArguments
参数中添加不安全 sysctl,如 配置节点资源 所述:例如:
$ oc edit cm node-config-compute -n openshift-node ... kubeletArguments: allowed-unsafe-sysctls: 1 - "net.ipv4.tcp_keepalive_time" - "net.ipv4.tcp_keepalive_intvl" - "net.ipv4.tcp_keepalive_probes"
- 1
- 添加您要使用的不安全 sysctl。
创建一个新的使用 restricted SCC 的内容并添加不安全 sysctl 的 SCC:
... allowHostDirVolumePlugin: false allowHostIPC: false allowHostNetwork: false allowHostPID: false allowHostPorts: false allowPrivilegeEscalation: true allowPrivilegedContainer: false allowedCapabilities: null allowedUnsafeSysctls: 1 - net.ipv4.tcp_keepalive_time - net.ipv4.tcp_keepalive_intvl - net.ipv4.tcp_keepalive_probes ... metadata: name: restricted-sysctls 2 ...
授予 pod ServiceAccount 的新 SCC 访问权限:
$ oc adm policy add-scc-to-user restricted-sysctls -z default -n your_project_name
将不安全 sysctl 添加到 pod 的 DeploymentConfig 中。
kind: DeploymentConfig ... template: ... spec: containers: ... securityContext: sysctls: - name: net.ipv4.tcp_keepalive_time value: "300" - name: net.ipv4.tcp_keepalive_intvl value: "20" - name: net.ipv4.tcp_keepalive_probes value: "3"
重启节点服务以应用更改:
# systemctl restart atomic-openshift-node