一、Pod变化管理
Kubernetes 1.23引入了一个新的参数–“rev”来跟踪Pod的历史,通过增加rev字段,kubernetes现在能够有效管理历史和版本的Pod。这意味着,管理员和DevOps可以追踪Pod的历史,从而更好的理解Pod生命周期。
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
restartPolicy: Never
revisionHistoryLimit: 5
如上所述,当Pod在进行更改时,管理员可以根据需求设置Pod副本的历史保留数量。将revisionHistoryLimit设置为任何值,将限制副本集保留的副本数。当超过这个限制时,旧的Pod将被删除并替换为新的Pod。
二、Pod Security Policies更新
Kubernetes 1.23引入了一些令人兴奋的功能,以改进Pod Security Policies (PSP)的功能。PSP是一种安全准则,用于在Kubernetes中定义Pod和容器的安全策略。在Kubernetes 1.23中,PSP的前身即将退役,Kubernetes即将引入一种名为“Pod Security Enforcement”的新安全准则,将PSP进一步加强。现有Pod Security Policies用户需要了解此更改并更新其安全策略为Pod Security Enforcement。
Pod Security Enforcement有许多新特性,包括:
- 更严格限制容器的UID和GID
- 更好的转换用户和组
更新后的Pod Security Enforcement可使用以下代码创建:
kind: PodSecurityPolicy
apiVersion: policy/v1beta1
metadata:
name: example
spec:
privileged: false
runAsUser:
rule: 'RunAsAny'
seLinux:
rule: 'RunAsAny'
fsGroup:
rule: 'RunAsAny'
supplementalGroups:
rule: 'RunAsAny'
volumes:
- ''
三、Kubernetes网络模型更新
网络模型一直是Kubernetes中一个关键的部分,从1.23版本开始,Kubernetes引入了新的网络架构:Dual-Stack。当Kubernetes集群启用Dual-Stack时,它将支持IPv4和IPv6网络。在IPv6网络已广泛传播的今天,这种更新对于更好的网络体验极其重要。
要使用Dual-Stack网络,请将双栈的地址添加到Kubernetes Service中:
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: nginx
ipFamilies:
- IPv4
- IPv6
ports:
- name: http
port: 80
protocol: TCP
targetPort: 8080
四、Pod Topology Spread策略的最大化
在以往的Kubernetes中,节点Affinity和Taints&Tolerations的路线在Pod调度中扮演了重要角色。在1.23版本中,Kubernetes已经更新了自己的策略,引入了更多功能,使Pod Topology Spread策略的负载均衡能够更好地完成。
以下示例展示了如何使用“label”通过节点亲和力来定义Pod Topology Spread的策略:
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
preference:
matchExpressions:
- key: my-label
operator: In
values:
- "hello"
topologySpreadConstraints:
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
my-label: "hello"