Hey to everyone!
I have a public GKE cluster and I’m trying configure fixed outbound IP for nodes.
I reserved static IP address and configured Cloud NAT and Cloud Router to this IP on default network and all subnets.
Then I applied ip-masquarade-agent to the cluster
config
nonMasqueradeCIDRs:
- 0.0.0.0/0
masqLinkLocal: true
resyncInterval: 10s
ip-masq-agent.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: ip-masq-agent
namespace: kube-system
spec:
selector:
matchLabels:
k8s-app: ip-masq-agent
template:
metadata:
labels:
k8s-app: ip-masq-agent
spec:
hostNetwork: true
containers:
- name: ip-masq-agent
image: gcr.io/google-containers/ip-masq-agent-amd64:v2.5.0
args:
- --masq-chain=IP-MASQ
# To non-masquerade reserved IP ranges by default, uncomment the line below.
# - --nomasq-all-reserved-ranges
securityContext:
privileged: true
volumeMounts:
- name: config
mountPath: /etc/config
volumes:
- name: config
configMap:
# Note this ConfigMap must be created in the same namespace as the
# daemon pods - this spec uses kube-system
name: ip-masq-agent
optional: true
items:
# The daemon looks for its config in a YAML file at /etc/config/ip-masq-agent
- key: config
path: ip-masq-agent
tolerations:
- effect: NoSchedule
operator: Exists
- effect: NoExecute
operator: Exists
- key: "CriticalAddonsOnly"
operator: "Exists"
Outbound requests from nodes from default-pool are sent from static IP, masquerading working as expected, but if I create new node pool, requests from its nodes are sent from node external id. Why masquerading not working for new node pools, what can be the problem?