#https://gist.github.com/jjo/8c616aaf795284bb5b85d02143745f63 apiVersion: v1 kind: ConfigMap metadata: name: kube-router-cfg namespace: kube-system labels: tier: node k8s-app: kube-router data: cni-conf.json: | { "cniVersion":"0.3.0", "name":"mynet", "plugins":[ { "name":"kubernetes", "type":"bridge", "bridge":"kube-bridge", "isDefaultGateway":true, "hairpinMode":true, "ipam":{ "type":"host-local" } } ] } --- apiVersion: apps/v1 kind: DaemonSet metadata: name: kube-router namespace: kube-system labels: k8s-app: kube-router spec: selector: matchLabels: k8s-app: kube-router template: metadata: labels: k8s-app: kube-router spec: priorityClassName: system-node-critical containers: - name: kube-router image: docker.io/cloudnativelabs/kube-router args: - "--run-router=true" - "--run-firewall=true" - "--run-service-proxy=true" - "--bgp-graceful-restart=true" - "--hairpin-mode=true" - "--enable-cni=true" - "--advertise-cluster-ip=true" - "--advertise-external-ip=true" - "--advertise-loadbalancer-ip=true" - "--kubeconfig=/var/lib/kube-router/kubeconfig" #- "--master=https://192.168.10.13:6443" securityContext: privileged: true imagePullPolicy: Always env: - name: NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName - name: KUBE_ROUTER_CNI_CONF_FILE value: /etc/cni/net.d/10-kuberouter.conflist livenessProbe: httpGet: path: /healthz port: 20244 initialDelaySeconds: 10 periodSeconds: 3 volumeMounts: - name: lib-modules mountPath: /lib/modules readOnly: true - name: cni-conf-dir mountPath: /etc/cni/net.d - name: kubeconfig mountPath: /var/lib/kube-router/kubeconfig readOnly: true - name: xtables-lock mountPath: /run/xtables.lock readOnly: false initContainers: - name: install-cni image: docker.io/cloudnativelabs/kube-router imagePullPolicy: Always command: - /bin/sh - -c - set -e -x; if [ ! -f /etc/cni/net.d/10-kuberouter.conflist ]; then if [ -f /etc/cni/net.d/*.conf ]; then rm -f /etc/cni/net.d/*.conf; fi; TMP=/etc/cni/net.d/.tmp-kuberouter-cfg; cp /etc/kube-router/cni-conf.json ${TMP}; mv ${TMP} /etc/cni/net.d/10-kuberouter.conflist; fi volumeMounts: - name: cni-conf-dir mountPath: /etc/cni/net.d - name: kube-router-cfg mountPath: /etc/kube-router hostNetwork: true serviceAccountName: kube-router serviceAccount: kube-router tolerations: - effect: NoSchedule operator: Exists - key: CriticalAddonsOnly operator: Exists - effect: NoExecute operator: Exists volumes: - name: lib-modules hostPath: path: /lib/modules - name: cni-conf-dir hostPath: path: /etc/cni/net.d - name: kube-router-cfg configMap: name: kube-router-cfg - name: kubeconfig hostPath: path: /var/lib/kube-router/kubeconfig - name: xtables-lock hostPath: path: /run/xtables.lock type: FileOrCreate