我们的系统在VPC本机网络中运行在GKE上.我们最近已经从v1.9升级到v1.21,当我们转移配置时,我注意到out kube部署中的spec.template.spec.affinity.nodeAffinity被删除和忽略了。我尝试用"kubectl apply -f kubectl Deployment.yaml“手动添加
我得到了“Deployment.app/kube配置”,但几秒钟后,kube恢复到没有这种关联的配置。
这是yaml的相关代码:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
addonmanager.kubernetes.io/mode: Reconcile
k8s-app: kube-dns
kubernetes.io/cluster-service: "true"
name: kube-dns
namespace: kube-system
spec:
progressDeadlineSeconds: 600
replicas: 2
revisionHistoryLimit: 10
selector:
matchLabels:
k8s-app: kube-dns
strategy:
rollingUpdate:
maxSurge: 10%
maxUnavailable: 0
type: RollingUpdate
template:
metadata:
annotations:
components.gke.io/component-name: kubedns
prometheus.io/port: "10054"
prometheus.io/scrape: "true"
scheduler.alpha.kubernetes.io/critical-pod: ""
seccomp.security.alpha.kubernetes.io/pod: runtime/default
creationTimestamp: null
labels:
k8s-app: kube-dns
spec:
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- preference:
matchExpressions:
- key: cloud.google.com/gke-nodepool
operator: In
values:
- pool-1
weight: 20
- preference:
matchExpressions:
- key: cloud.google.com/gke-nodepool
operator: In
values:
- pool-3
- training-pool
weight: 1
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: cloud.google.com/gke-nodepool
operator: In
values:
- pool-1
- pool-3
- training-pool
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchExpressions:
- key: k8s-app
operator: In
values:
- kube-dns
topologyKey: kubernetes.io/hostname
weight: 100
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: k8s-app
operator: In
values:
- kube-dns
topologyKey: cloud.google.com/hostname
containers:
....
dnsPolicy: Default
nodeSelector:
kubernetes.io/os: linux这就是当我运行$ kubectl get deployment -n kube-system -o yaml时得到的结果。
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
....
labels:
addonmanager.kubernetes.io/mode: Reconcile
k8s-app: kube-dns
kubernetes.io/cluster-service: "true"
name: kube-dns
namespace: kube-system
resourceVersion: "16650828"
uid: ....
spec:
progressDeadlineSeconds: 600
replicas: 2
revisionHistoryLimit: 10
selector:
matchLabels:
k8s-app: kube-dns
strategy:
rollingUpdate:
maxSurge: 10%
maxUnavailable: 0
type: RollingUpdate
template:
metadata:
annotations:
components.gke.io/component-name: kubedns
prometheus.io/port: "10054"
prometheus.io/scrape: "true"
scheduler.alpha.kubernetes.io/critical-pod: ""
seccomp.security.alpha.kubernetes.io/pod: runtime/default
creationTimestamp: null
labels:
k8s-app: kube-dns
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchExpressions:
- key: k8s-app
operator: In
values:
- kube-dns
topologyKey: kubernetes.io/hostname
weight: 100
containers:
...
dnsPolicy: Default
nodeSelector:
kubernetes.io/os: linux
priorityClassName: system-cluster-critical
restartPolicy: Always
schedulerName: default-scheduler
securityContext:
fsGroup: 65534
supplementalGroups:
- 65534
serviceAccount: kube-dns
serviceAccountName: kube-dns
terminationGracePeriodSeconds: 30
tolerations:
- key: CriticalAddonsOnly
operator: Exists
- key: components.gke.io/gke-managed-components
operator: Exists
volumes:
- configMap:
defaultMode: 420
name: kube-dns
optional: true
name: kube-dns-config
status:
...正如您所看到的,GKE只是删除了NodeAffinity部分以及podAffinity的一部分。
发布于 2022-01-12 21:03:11
库贝-dns是GKE中的一种服务发现机制,是集群使用的默认DNS提供程序。它是由Google管理的,这就是为什么这些更改不起作用的原因,而且很可能这部分代码在新版本中被删除了。
如果需要应用自定义配置,可以按照指南设置自定义kube-dns部署执行。
https://stackoverflow.com/questions/70682572
复制相似问题