作者小头像 Lv.1
3 成长值

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据
个人勋章
TA还没获得勋章~
成长雷达
0
3
0
0
0

个人资料

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据

达成规则

发布时间 2022/01/26 10:57:45 最后回复 芒果酱 2022/02/08 16:42:26 版块 云容器
3591 3 0
他的回复:
哈哈kubernetes 1.22 在8月4号正式发布,新版本包含53项增强功能:其中包含16个alpha特性,24个beta特性,13个stable特性,还有3个特性被废弃。### 重要特性#### Memory Qos当前kubernetes使用cgroup v1 api, 当前Qos级别仅对CPU资源生效,kubernetes通过设置cpuset.cpus/cpu.cfs_period_us / cpu.cfs_quota_us / cpu.shares等实现绑核、权重等,这样在CPU繁忙时,任务会被限制,当不会杀掉。而对于memory kubernetes 会通过memory.limit_in_bytes去限制容器使用内存上限,然后通过Pod Qos Class来给不同QoS Class Pod的设置不同的oom_scores来保证当系统OOM发生时容器进程被杀的顺序。对于Guaranteed pods,内存不能完全保留,页面缓存有被回收的风险。对于 Burstable pod,过度使用内存可能会增加容器被杀死的风险,同时可能会导致一些内存敏感性应用在申请内存时触发慢路径,影响服务质量。1.22版本利用cgroup v2的memory controller 实现Memory QoS,当前该特性为alpha特性,内核版本需要大于Linux 4.5,memory qos主要利用了以下几个cgroup v2- memory.min: 对应requests.memory, 这是内存的硬保护机制,如果当前的cgroup的内存使用量在min以内的话,则任何情况下都不会对这部分内存进行回收。- memory.max: 对应limits.memory,对应cgroup v1中的memory.limit_in_bytes, 容器或者pod的内存使用上限。- memory.high: 内存使用的上限限制, 和max不同的是,当内存使用超过设定值时,max会直接触发OOM,而high的话会让当前cgroup承受更多的内存回收压力,尽量回收内存,使得内存使用减少到memory.high以下。kubernetes中主要使用此值限制Burstable pod的内存分配,这个设置的公式为  ```go  memory.high=limits.memory/node allocatable memory * memory throttling factor  ```  如果容器未设置limit的话,使用的时node allocatable memory。那当前该特性依赖cgroup v2,那在Cgroup v1上,CCE Turbo即将上限的资源超卖混部功能,使用Memcg在系统OOM时优先驱逐离线业务,保证在线业务。#### ETCD 升级到3.5.0版本Kubernetes配套的etcd升级到了3.5.0新版本,该版本包含了若干对etcd读写性能优化,启动耗时优化,内存占用优化等,显著的提升了集群的稳定性,吞吐量,延时,更好的支持大规模的kubernetes集群。同时也从运维、安全上增加了etcd 日志轮转/压缩、集群降级、etcdutl、expensive request 定位、本地 trace 及分布式 trace OpenTelemetry 等特性支持,以及一系列安全问题优化,将显著提升问题定位效率。#### Pod Security Standards当前kubernetes提供了Pod安全性标准,主要有以下三种策略类型:- Privileged: 定义中限制较少,对于默认允许的实施机制来说(类似gatekeeper),Privileged 意味着不应用任何约束,此类策略一般由权级较高,受信任用户或者基础设施负责- Baseline:  便于常见的容器化应用采用,同时禁止已知的特权提升。 此策略针对的是应用运维人员和非关键性应用的开发人员。标准中明确了一些控制将被实施,比如必须禁止共享宿主名字空间,必须禁止特权容器,必须禁止 HostPath 卷。应禁止使用宿主端口,或者至少限定为已知列表,限制sysctls的能修改的范围等- Restricted: 限制性非常强的策略,遵循当前的保护 Pod 的最佳实践。该类策略主要针对运维人员和安全性很重要的应用的开发人员,以及不太被信任的用户. 标准中除了要包含Baseline中所有的规则以外,还要求容器以非 root 用户运行,禁止容器使用 root 作为主要或辅助 GID 来运行,必须要求使用 RuntimeDefault seccomp profile 或者允许使用特定的 profiles,禁止(通过 SetUID 或 SetGID 文件模式)获得特权提升,对存储卷一些安全进行限制等通过Pod Security标准的定义,将策略定义与实现解耦。1.21版本中kubernetes废弃了PSP,1.22版本中Kubernetes实现了一个Admission Controller去替换Pod Security Policy. 可以给namespace 打上一些特性的label,去指定namespace的 pod security level,或者通过配置AdmissionConfiguration配置一些默认的Pod Security 规则。#### Node  system swap support1.22版本新增alpha特性,node节点支持swap memory, 这样管理员可以在 Linux 节点上配置swap,将块存储的一部分视为额外的虚拟内存.#### seccomp默认配置这个新特性提供了集群范围的seccomp默认值,默认情况下kubelet使用RuntimeDeafault替代Unconfined,大大增强了kubernetes 默认的安全性。#### 使用 kubeadm 以非root用户运行kubernetes controller plane这样控制平面以较低的权限运行。当前CCE集群中管理面都以非root用户运行,给客户提供更安全的集群。#### Server-side Apply 和 External credential providers 两个特性GA### API Change1.22版本又有一部分API废弃,停止提供服务了。- `ValidatingWebhookConfiguration` and `MutatingWebhookConfiguration` beta版本(**admissionregistration.k8s.io/v1beta1**)- **apiextensions.k8s.io/v1beta1** 下的`CustomResourceDefinition` - **apiregistration.k8s.io/v1beta1**下的`APIService` - **authentication.k8s.io/v1beta1**下的`TokenReview` -  **authorization.k8s.io/v1beta1**下的`SubjectAccessReview`, `LocalSubjectAccessReview`, `SelfSubjectAccessReview`- **certificates.k8s.io/v1beta1**下的`CertificateSigningRequest` - **coordination.k8s.io/v1beta1**下的`Lease` - **extensions/v1beta1** and **networking.k8s.io/v1beta1** 下的`Ingress` 请有在使用这些API的小伙伴们在升级1.22版本的时候要注意了,尽快升级这些资源的版本。### 遗留问题- 如果有多个容器的Guaranteed Pod,cpu manager/ memory manager/device manager等分配出现异常。社区正在紧急修复中
他的回复:
参加kubernetes 1.22 在8月4号正式发布,新版本包含53项增强功能:其中包含16个alpha特性,24个beta特性,13个stable特性,还有3个特性被废弃。### 重要特性#### Memory Qos当前kubernetes使用cgroup v1 api, 当前Qos级别仅对CPU资源生效,kubernetes通过设置cpuset.cpus/cpu.cfs_period_us / cpu.cfs_quota_us / cpu.shares等实现绑核、权重等,这样在CPU繁忙时,任务会被限制,当不会杀掉。而对于memory kubernetes 会通过memory.limit_in_bytes去限制容器使用内存上限,然后通过Pod Qos Class来给不同QoS Class Pod的设置不同的oom_scores来保证当系统OOM发生时容器进程被杀的顺序。对于Guaranteed pods,内存不能完全保留,页面缓存有被回收的风险。对于 Burstable pod,过度使用内存可能会增加容器被杀死的风险,同时可能会导致一些内存敏感性应用在申请内存时触发慢路径,影响服务质量。1.22版本利用cgroup v2的memory controller 实现Memory QoS,当前该特性为alpha特性,内核版本需要大于Linux 4.5,memory qos主要利用了以下几个cgroup v2- memory.min: 对应requests.memory, 这是内存的硬保护机制,如果当前的cgroup的内存使用量在min以内的话,则任何情况下都不会对这部分内存进行回收。- memory.max: 对应limits.memory,对应cgroup v1中的memory.limit_in_bytes, 容器或者pod的内存使用上限。- memory.high: 内存使用的上限限制, 和max不同的是,当内存使用超过设定值时,max会直接触发OOM,而high的话会让当前cgroup承受更多的内存回收压力,尽量回收内存,使得内存使用减少到memory.high以下。kubernetes中主要使用此值限制Burstable pod的内存分配,这个设置的公式为  ```go  memory.high=limits.memory/node allocatable memory * memory throttling factor  ```  如果容器未设置limit的话,使用的时node allocatable memory。那当前该特性依赖cgroup v2,那在Cgroup v1上,CCE Turbo即将上限的资源超卖混部功能,使用Memcg在系统OOM时优先驱逐离线业务,保证在线业务。#### ETCD 升级到3.5.0版本Kubernetes配套的etcd升级到了3.5.0新版本,该版本包含了若干对etcd读写性能优化,启动耗时优化,内存占用优化等,显著的提升了集群的稳定性,吞吐量,延时,更好的支持大规模的kubernetes集群。同时也从运维、安全上增加了etcd 日志轮转/压缩、集群降级、etcdutl、expensive request 定位、本地 trace 及分布式 trace OpenTelemetry 等特性支持,以及一系列安全问题优化,将显著提升问题定位效率。#### Pod Security Standards当前kubernetes提供了Pod安全性标准,主要有以下三种策略类型:- Privileged: 定义中限制较少,对于默认允许的实施机制来说(类似gatekeeper),Privileged 意味着不应用任何约束,此类策略一般由权级较高,受信任用户或者基础设施负责- Baseline:  便于常见的容器化应用采用,同时禁止已知的特权提升。 此策略针对的是应用运维人员和非关键性应用的开发人员。标准中明确了一些控制将被实施,比如必须禁止共享宿主名字空间,必须禁止特权容器,必须禁止 HostPath 卷。应禁止使用宿主端口,或者至少限定为已知列表,限制sysctls的能修改的范围等- Restricted: 限制性非常强的策略,遵循当前的保护 Pod 的最佳实践。该类策略主要针对运维人员和安全性很重要的应用的开发人员,以及不太被信任的用户. 标准中除了要包含Baseline中所有的规则以外,还要求容器以非 root 用户运行,禁止容器使用 root 作为主要或辅助 GID 来运行,必须要求使用 RuntimeDefault seccomp profile 或者允许使用特定的 profiles,禁止(通过 SetUID 或 SetGID 文件模式)获得特权提升,对存储卷一些安全进行限制等通过Pod Security标准的定义,将策略定义与实现解耦。1.21版本中kubernetes废弃了PSP,1.22版本中Kubernetes实现了一个Admission Controller去替换Pod Security Policy. 可以给namespace 打上一些特性的label,去指定namespace的 pod security level,或者通过配置AdmissionConfiguration配置一些默认的Pod Security 规则。#### Node  system swap support1.22版本新增alpha特性,node节点支持swap memory, 这样管理员可以在 Linux 节点上配置swap,将块存储的一部分视为额外的虚拟内存.#### seccomp默认配置这个新特性提供了集群范围的seccomp默认值,默认情况下kubelet使用RuntimeDeafault替代Unconfined,大大增强了kubernetes 默认的安全性。#### 使用 kubeadm 以非root用户运行kubernetes controller plane这样控制平面以较低的权限运行。当前CCE集群中管理面都以非root用户运行,给客户提供更安全的集群。#### Server-side Apply 和 External credential providers 两个特性GA### API Change1.22版本又有一部分API废弃,停止提供服务了。- `ValidatingWebhookConfiguration` and `MutatingWebhookConfiguration` beta版本(**admissionregistration.k8s.io/v1beta1**)- **apiextensions.k8s.io/v1beta1** 下的`CustomResourceDefinition` - **apiregistration.k8s.io/v1beta1**下的`APIService` - **authentication.k8s.io/v1beta1**下的`TokenReview` -  **authorization.k8s.io/v1beta1**下的`SubjectAccessReview`, `LocalSubjectAccessReview`, `SelfSubjectAccessReview`- **certificates.k8s.io/v1beta1**下的`CertificateSigningRequest` - **coordination.k8s.io/v1beta1**下的`Lease` - **extensions/v1beta1** and **networking.k8s.io/v1beta1** 下的`Ingress` 请有在使用这些API的小伙伴们在升级1.22版本的时候要注意了,尽快升级这些资源的版本。### 遗留问题- 如果有多个容器的Guaranteed Pod,cpu manager/ memory manager/device manager等分配出现异常。社区正在紧急修复中