apiVersion: v1 kind: ServiceAccount metadata: name: kube-vip namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: system:kube-vip-role rules: - apiGroups: [""] resources: ["services/status"] verbs: ["update"] - apiGroups: [""] resources: ["services", "endpoints"] verbs: ["list", "get", "watch", "update"] - apiGroups: [""] resources: ["nodes"] verbs: ["list", "get", "watch", "update", "patch"] - apiGroups: ["coordination.k8s.io"] resources: ["leases"] verbs: ["list", "get", "watch", "update", "create"] - apiGroups: ["discovery.k8s.io"] resources: ["endpointslices"] verbs: ["list", "get", "watch", "update"] - apiGroups: [""] resources: ["pods"] verbs: ["list"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: system:kube-vip-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:kube-vip-role subjects: - kind: ServiceAccount name: kube-vip namespace: kube-system --- apiVersion: apps/v1 kind: DaemonSet metadata: name: kube-vip namespace: kube-system spec: selector: matchLabels: app.kubernetes.io/name: kube-vip template: metadata: labels: app.kubernetes.io/name: kube-vip spec: serviceAccountName: kube-vip hostNetwork: true affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/control-plane operator: Exists tolerations: - key: node-role.kubernetes.io/control-plane operator: Exists effect: NoSchedule - key: node-role.kubernetes.io/master operator: Exists effect: NoSchedule containers: - name: kube-vip image: ghcr.io/kube-vip/kube-vip:{{ kube_vip_version }} imagePullPolicy: IfNotPresent args: - manager env: - name: vip_arp value: "true" - name: port value: "6443" - name: vip_interface value: {{ kube_vip_interface | quote }} - name: vip_subnet value: "32" - name: cp_enable value: "true" - name: cp_namespace value: kube-system - name: vip_ddns value: "false" - name: vip_leaderelection value: "true" - name: vip_leaseduration value: "5" - name: vip_renewdeadline value: "3" - name: vip_retryperiod value: "1" - name: address value: {{ kube_vip_address | quote }} securityContext: capabilities: add: - NET_ADMIN - NET_RAW - SYS_TIME