instruction: Create a Dockerfile for cluster
output: ```dockerfile
  from the manifest comparison,
  and kubeadm will expect a change in the Pod hash, but the kubelet will never update the hash.
  There are two way to workaround this issue if you see it in your cluster:
  
  The etcd upgrade can be skipped between the affected versions and v1.28.3 (or later) by using:
  kubeadm upgrade {apply|node} [version] --etcd-upgrade=false
  This is not recommended in case a new etcd version was introduced by a later v1.28 patch version.
  
  Before upgrade, patch the manifest for the etcd static pod, to remove the problematic defaulted attributes:
  diff --git a/etc/kubernetes/manifests/etcd_defaults.yaml b/etc/kubernetes/manifests/etcd_origin.yaml
  index d807ccbe0aa..46b35f00e15 100644
  --- a/etc/kubernetes/manifests/etcd_defaults.yaml
  +++ b/etc/kubernetes/manifests/etcd_origin.yaml
  @@ -43,7 +43,6 @@ spec:
   scheme: HTTP
   initialDelaySeconds: 10
   periodSeconds: 10
  - successThreshold: 1
   timeoutSeconds: 15
   name: etcd
   resources:
  @@ -59,26 +58,18 @@ spec:
   scheme: HTTP
   initialDelaySeconds: 10
   periodSeconds: 10
  - successThreshold: 1
   timeoutSeconds: 15
  - terminationMessagePath: /dev/termination-log
  - terminationMessagePolicy: File
   volumeMounts:
   - mountPath: /var/lib/etcd
   name: etcd-data
   - mountPath: /etc/kubernetes/pki/etcd
   name: etcd-certs
  - dnsPolicy: ClusterFirst
  - enableServiceLinks: true
   hostNetwork: true
   priority: 2000001000
   priorityClassName: system-node-critical
  - restartPolicy: Always
  - schedulerName: default-scheduler
   securityContext:
   seccompProfile:
   type: RuntimeDefault
  - terminationGracePeriodSeconds: 30
   volumes:
   - hostPath:
   path: /etc/kubernetes/pki/etcd
  
  More information can be found in the
  tracking issue for this bug.
  
  Feedback
  Was this page helpful?
  Yes
  No
  
   Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on
  
   Stack Overflow.
   Open an issue in the GitHub Repository if you want to
  
   report a problem
   or
  
   suggest an improvement.
  
   Last modified February 16, 2024 at 5:50 PM PST: update kubeconfig user --config (3ab10b2b94)
  
    Create child page
   Create an issue
   Print entire section
  
  Not possible to join a v1.18 Node to a v1.17 cluster due to missing RBAC
  ebtables or some similar executable not found during installation
  kubeadm blocks waiting for control plane during installation
  kubeadm blocks when removing managed containers
  Pods in RunContainerError, CrashLoopBackOff or Error state
  coredns is stuck in the Pending state
  HostPort services do not work
  Pods are not accessible via their Service IP
  TLS certificate errors
  Kubelet client certificate rotation fails
  Default NIC When using flannel as the pod network in Vagrant
  Non-public IP used for containers
  coredns pods have CrashLoopBackOff or Error state
  etcd pods restart continually
  Not possible to pass a comma separated list of values to arguments inside a --component-extra-args flag
  kube-proxy scheduled before node is initialized by cloud-controller-manager
  /usr is mounted read-only on nodes
  kubeadm upgrade plan prints out context deadline exceeded error message
  kubeadm reset unmounts /var/lib/kubelet
  Cannot use the metrics-server securely in a kubeadm cluster
  Upgrade fails due to etcd hash not changing
  
  Documentation
  Blog
  Training
  Partners
  Community
  Case Studies
  
  © 2025 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
  
  ICP license: 京ICP备17074266号-3
  ```