K8S
So this cluster is using:
----------Shorts------------
3-Master && 8-Worker cluster (172.27.69.36-172.27.69.46)
CNI-Plugin: Calico [*CNI-Container Network Interface]
VXLAN encapsulation (VNIID - 4096, outer ip Node-IPs)
IPVS kube-proxy (Linux IP virtual server)
CNI-Plugin: Calico [*CNI-Container Network Interface]
VXLAN encapsulation (VNIID - 4096, outer ip Node-IPs)
IPVS kube-proxy (Linux IP virtual server)
CSI : Longhorn [*container storage interface]
POD-IP allocated by CNI from POD-CIDR
| Service-IP Allocated by kube-apiserver from Service CIDR |
Containers : Waiting > Running > Terminated
POD :Pending > Running > Succeeded >Failed >unknown
probes & health-checks
Startup Probe: Indicates application startup, delaying other probes.
Liveness Probe: Checks if a container is running; failure triggers restarts based on restartPolicy.
Readiness Probe: Checks if a container can accept traffic; failure removes the Pod from service endpoints.
Example:
Liveness: tcp-socket :kafka-client delay=10s timeout=5s period=20s #success=1 #failure=6
Readiness: tcp-socket :kafka-client delay=5s timeout=5s period=10s #success=1 #failure=6
Startup: tcp-socket :kafka-client delay=30s timeout=1s period=10s #success=1 #failure=15
Requests & limits
request Guaranteed minimum
limit Maximum allowed
#CPU - request = average & limit = peak (spike - CPU > limit → throttling → latency )
#RAM - request ≈ limit (spike - Memory > limit → OOMKilled → restart)
--------Shorts-----------------
---------
In Kubernetes, IPVS (IP Virtual Server) is a kube-proxy mode that provides high-performance, layer 4 (transport-layer) load balancing for services, specifically designed to address the scalability limitations of the default iptables mode in large clusters. It uses more efficient data structures (hash tables) in the Linux kernel for routing traffic.
--------
In Kubernetes, IPVS (IP Virtual Server) is a kube-proxy mode that provides high-performance, layer 4 (transport-layer) load balancing for services, specifically designed to address the scalability limitations of the default iptables mode in large clusters. It uses more efficient data structures (hash tables) in the Linux kernel for routing traffic.
--------
root@ems203-m1:/home/labadmin# kubectl get ippools -o yaml
apiVersion: v1
items:
- apiVersion: crd.projectcalico.org/v1
kind: IPPool
metadata:
annotations:
projectcalico.org/metadata: '{"creationTimestamp":"2025-10-22T21:37:34Z"}'
creationTimestamp: "2025-10-22T21:37:34Z"
generation: 1
name: default-pool
resourceVersion: "1348"
uid: 93629893-8cee-4212-bed1-c472e4cefd37
spec:
allowedUses:
- Workload
- Tunnel
blockSize: 26
cidr: 10.233.64.0/18
ipipMode: Never
natOutgoing: true
nodeSelector: all()
vxlanMode: Always
kind: List
metadata:
resourceVersion: ""
root@ems203-m1:/home/labadmin# kubectl cluster-info dump | grep -m1 service-cluster-ip-range
"--service-cluster-ip-range=10.233.0.0/18",
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:f6:32:7c brd ff:ff:ff:ff:ff:ff
altname enp0s3
inet 172.27.69.36/22 brd 172.27.71.255 scope global ens3
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fef6:327c/64 scope link
valid_lft forever preferred_lft forever
root@ems203-m1:/home/labadmin# ip a | grep -A 3 vxlan.calico
4: vxlan.calico: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether 66:1d:ce:65:46:57 brd ff:ff:ff:ff:ff:ff
inet 10.233.64.64/32 scope global vxlan.calico
valid_lft forever preferred_lft forever
inet6 fe80::641d:ceff:fe65:4657/64 scope link
valid_lft forever preferred_lft forever
root@ems203-w2:/home/labadmin# ip a | grep -A 3 ens3
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:2d:5d:fa brd ff:ff:ff:ff:ff:ff
altname enp0s3
inet 172.27.69.40/22 brd 172.27.71.255 scope global ens3
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe2d:5dfa/64 scope link
valid_lft forever preferred_lft forever
root@ems203-w2:/home/labadmin# ip a | grep -A 3 vxlan.calico
12: vxlan.calico: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether 66:27:39:67:b9:64 brd ff:ff:ff:ff:ff:ff
inet 10.233.101.192/32 scope global vxlan.calico
valid_lft forever preferred_lft forever
inet6 fe80::6427:39ff:fe67:b964/64 scope link
valid_lft forever preferred_lft forever
root@ems203-m1:/home/labadmin# ip route | grep vxlan
10.233.67.192/26 via 10.233.67.192 dev vxlan.calico onlink
10.233.97.64/26 via 10.233.97.64 dev vxlan.calico onlink
10.233.98.64/26 via 10.233.98.64 dev vxlan.calico onlink
10.233.100.128/26 via 10.233.100.128 dev vxlan.calico onlink
10.233.101.128/26 via 10.233.101.128 dev vxlan.calico onlink
10.233.101.192/26 via 10.233.101.192 dev vxlan.calico onlink
10.233.111.192/26 via 10.233.111.192 dev vxlan.calico onlink
10.233.120.192/26 via 10.233.120.192 dev vxlan.calico onlink
10.233.127.64/26 via 10.233.127.64 dev vxlan.calico onlink
10.233.127.128/26 via 10.233.127.128 dev vxlan.calico onlink
root@ems203-m1:/home/labadmin# calicoctl node status
Calico process is running.
The BGP backend process (BIRD) is not running.
Default Value: By default, Calico uses VNI 4096 for its VXLAN overlay.
#registered VTEP IPS
root@ems203-m1:/home/labadmin# kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.annotations.projectcalico\.org/IPv4VXLANTunnelAddr}{"\n"}{end}'
ems203-m1 10.233.64.64
ems203-m2 10.233.100.128
ems203-m3 10.233.111.192
ems203-w1 10.233.67.192
ems203-w2 10.233.101.192
ems203-w3 10.233.127.128
ems203-w4 10.233.97.64
ems203-w5 10.233.120.192
ems203-w6 10.233.101.128
ems203-w7 10.233.98.64
ems203-w8 10.233.127.64
root@ems203-m1:/home/labadmin# bridge fdb show dev vxlan.calico
66:62:8e:1f:5b:9b dst 172.27.69.43 self permanent
66:27:39:67:b9:64 dst 172.27.69.40 self permanent
66:b9:32:4c:3e:8a dst 172.27.69.42 self permanent
66:37:0d:d0:a5:13 dst 172.27.69.37 self permanent
66:15:cb:8b:89:03 dst 172.27.69.46 self permanent
66:41:0c:6a:9d:3f dst 172.27.69.38 self permanent
66:e2:e9:96:9f:82 dst 172.27.69.39 self permanent
66:40:b6:b5:48:59 dst 172.27.69.44 self permanent
66:ae:75:42:69:72 dst 172.27.69.41 self permanent
66:8f:43:dd:a8:2f dst 172.27.69.45 self permanent
root@ems203-m1:/home/labadmin# kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.annotations.projectcalico\.org/IPv4VXLANTunnelAddr}{"\n"}{end}'
ems203-m1 10.233.64.64
ems203-m2 10.233.100.128
ems203-m3 10.233.111.192
ems203-w1 10.233.67.192
ems203-w2 10.233.101.192
ems203-w3 10.233.127.128
ems203-w4 10.233.97.64
ems203-w5 10.233.120.192
ems203-w6 10.233.101.128
ems203-w7 10.233.98.64
ems203-w8 10.233.127.64
root@ems203-m1:/home/labadmin# bridge fdb show dev vxlan.calico
66:62:8e:1f:5b:9b dst 172.27.69.43 self permanent
66:27:39:67:b9:64 dst 172.27.69.40 self permanent
66:b9:32:4c:3e:8a dst 172.27.69.42 self permanent
66:37:0d:d0:a5:13 dst 172.27.69.37 self permanent
66:15:cb:8b:89:03 dst 172.27.69.46 self permanent
66:41:0c:6a:9d:3f dst 172.27.69.38 self permanent
66:e2:e9:96:9f:82 dst 172.27.69.39 self permanent
66:40:b6:b5:48:59 dst 172.27.69.44 self permanent
66:ae:75:42:69:72 dst 172.27.69.41 self permanent
66:8f:43:dd:a8:2f dst 172.27.69.45 self permanent
##networking (from Worker2's perspective)
-----------------------------
*** each pod creates one namespace & veth pair
----------------------------
What a veth pair looks like in Kubernetes (Calico)
-----------------------------
*** each pod creates one namespace & veth pair
----------------------------
What a veth pair looks like in Kubernetes (Calico)
For each pod, Calico creates a veth pair:
[ pod netns ] [ host netns ]
eth0 <──────────────> caliXXXXXXXX
eth0 → inside the pod
caliXXXXXXXX → on the node (host)
## same node pod-to-pod
Pod A eth0
→ veth
→ caliXXXX
→ Linux bridge / routing
→ caliYYYY
→ veth
→ Pod B eth0
Different node pod-to-pod
Pod eth0
→ veth
→ caliXXXX
→ vxlan.calico
→ remote node
root@ems203-m1:/home/labadmin# kubectl get pods -A -o wide | grep ems203-w2 | grep -c 10.233.101
24
root@ems203-m1:/home/labadmin# kubectl get pods -A -o wide | grep ems203-w2
ems borabora-operator-con 1/1 Running 0 2d20h 10.233.101.215 ems203-w2
ems docker-proxy-7778887f 2/2 Running 0 31d 10.233.101.255 ems203-w2
ems ems-actor-alarms-proc 1/1 Running 0 2d20h 10.233.101.222 ems203-w2
ems ems-actor-individual- 1/1 Running 0 2d21h 10.233.101.226 ems203-w2
ems ems-actor-ipadb-diagn 1/1 Running 0 2d20h 10.233.101.230 ems203-w2
ems ems-apigw-kong-5b957b 2/2 Running 0 9d 10.233.101.248 ems203-w2
ems ems-apigw-kong2-7669c 2/2 Running 0 9d 10.233.101.197 ems203-w2
ems ems-apigw-kong3-57cf4 2/2 Running 0 9d 10.233.101.246 ems203-w2
ems ems-inventory-plannin 2/2 Running 0 2d20h 10.233.101.251 ems203-w2
ems ems-mongo-sharded-sha 2/2 Running 0 11d 10.233.101.228 ems203-w2
ems ems-mongo-sharded-sha 2/2 Running 0 11d 10.233.101.202 ems203-w2
ems ems-strimzi-controlle 1/1 Running 0 2d21h 10.233.101.210 ems203-w2
ems ems-vault-1 1/1 Running 0 31d 10.233.101.220 ems203-w2
ems nemo-physical-invento 1/1 Running 0 2d20h 10.233.101.193 ems203-w2
kube-system calico-node-xf66h 1/1 Running 1 72d 172.27.69.40 ems203-w2
kube-system kube-proxy-kpcv9 1/1 Running 1 72d 172.27.69.40 ems203-w2
kube-system nginx-proxy-ems203-w2 1/1 Running 1 72d 172.27.69.40 ems203-w2
longhorn-system csi-provisioner-7fd99 1/1 Running 0 31d 10.233.101.243 ems203-w2
longhorn-system csi-resizer-6c5c96c47 1/1 Running 0 31d 10.233.101.244 ems203-w2
longhorn-system engine-image-ei-516d8 1/1 Running 1 72d 10.233.101.235 ems203-w2
longhorn-system instance-manager-47f6 1/1 Running 0 31d 10.233.101.213 ems203-w2
longhorn-system longhorn-csi-plugin-v 3/3 Running 3 72d 10.233.101.204 ems203-w2
longhorn-system longhorn-manager-sl86 1/1 Running 2 72d 10.233.101.233 ems203-w2
metal-lb ems-metallb-speaker-r 1/1 Running 0 2d21h 172.27.69.40 ems203-w2
observability alertmanager-ems-obse 2/2 Running 0 31d 10.233.101.196 ems203-w2
observability ems-fluentd-fqkw2 1/1 Running 0 2d20h 10.233.101.227 ems203-w2
observability ems-observability-met 1/1 Running 0 31d 10.233.101.254 ems203-w2
observability ems-observability-met 1/1 Running 1 32d 172.27.69.40 ems203-w2
observability prometheus-ems-observ 3/3 Running 0 31d 10.233.101.201 ems203-w2
cni-16b44cd2-be79-1226-e793-b21de25854ec (id: 1)
cni-e554c17d-f7b3-0556-27af-59b6439537ad (id: 14)
cni-22636b6a-bd96-c944-31e1-359cf3584c00 (id: 23)
cni-9665d23e-74cc-713d-d4fb-4b8875a4df47 (id: 16)
cni-7e6de89b-14fe-9a9d-93ce-52b60417816d (id: 12)
cni-0f55d5e6-6701-db32-d43d-01455ebd418f (id: 11)
cni-dddc8902-44a4-9fac-8444-9b2195ebe076 (id: 21)
cni-75507301-1e8b-9938-7e85-f682d2824953 (id: 10)
cni-6ac17040-6903-edae-8d08-3ef8070bca3a (id: 19)
cni-8f0bdb30-8238-0856-9ed8-b0a00aced70f (id: 17)
cni-0b4940d4-5367-bc02-f46d-b8d1de393307 (id: 0)
cni-9f7608ab-b1f5-3b27-e0d6-a7a2c9674959 (id: 15)
cni-d06aa35b-b00d-2f47-a731-15a5b7253dfd (id: 4)
cni-9ac5ed03-a60b-b12c-30de-3f4f1bdbaff9 (id: 13)
cni-5cfad411-6821-68c7-94ad-11389718ae12 (id: 6)
cni-6a7332e2-e035-5694-5ad4-c7d702ae5a55 (id: 2)
cni-a0dba22d-a18d-d062-be37-3ec5afd1c1e8 (id: 25)
cni-393b5f46-ce4d-4b3c-9534-866ce28aeb55 (id: 24)
cni-37cd7fc2-fc57-3701-5376-e5ce17227118 (id: 22)
cni-276ff20b-a39e-5f95-9b72-8b337d0f62e1 (id: 9)
cni-7eb3609f-194b-01e8-2cd5-bc0bfa0b4916 (id: 8)
cni-b283c2ed-7b25-657e-5d9d-b78680516442 (id: 7)
cni-733ddcba-b3f5-f981-c892-7d18287fcd5e (id: 5)
cni-4490cc3b-01b3-bc9f-6e8e-079d636fb36f (id: 3)
root@ems203-w2:/home/labadmin# ip netns | wc -l
24
root@ems203-w2:/home/labadmin# ip netns exec cni-16b44cd2-be79-1226-e793-b21de25854ec ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0@if1268: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default qlen 1000
link/ether d6:f4:84:0c:5f:69 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.233.101.193/32 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::d4f4:84ff:fe0c:5f69/64 scope link
valid_lft forever preferred_lft forever
eth0@if1268 <──── veth ────> cni-16b44cd2-be79-1226-e793-b21de25854ec
All About Kubernetes Services
1.Type-ClusterIP
kubectl describe svc ad-proxy -n emsClusterIP: 10.233.12.43
Port: 8636
TargetPort: proxy-port → 8636
Endpoint: 10.233.127.106:8636
Now look at IPVS output
TCP 10.233.12.43:8636 rr
-> 10.233.127.106:8636 Masq 1 0 0
TCP 10.233.12.43:8636 rr
-> 10.233.127.106:8636 Masq 1 0 0
MeaningField Meaning
10.233.12.43:8636 ClusterIP + ServicePort
rr Round-robin scheduler
10.233.127.106:8636 Pod IP + container port
Masq SNAT (default kube-proxy behavior)
10.233.12.43:8636 ClusterIP + ServicePort
rr Round-robin scheduler
10.233.127.106:8636 Pod IP + container port
Masq SNAT (default kube-proxy behavior)
ClusterIP services are implemented as IPVS virtual servers
2.NodePort
TCP 172.27.69.36:30312 rr
-> 10.233.101.197:9000
-> 10.233.127.66:9000
-> 10.233.127.184:9000
This is a NodePort service
Part Meaning
172.27.69.36 Node IP
30312 NodePort
Backend ports Pod targetPort
Traffic flow
Client
|
| NodeIP:30312
|
IPVS virtual server
|
| RR
|
Pods :9000
How kube-proxy (IPVS) builds this internally
For every Service, kube-proxy creates:
A) IPVS virtual server
<service IP>:<service port>
B) Real servers
<pod IP>:<targetPort>
C) Optional extras
NodePort → NodeIP:NodePort
LoadBalancer → ExternalIP:Port
SessionAffinity → persistent 10800
Final mental model (VERY IMPORTANT)
Think like this:
kubectl Service
↓
kube-proxy
↓
IPVS Virtual Server
↓
Endpoint Pods
Mapping table
Kubernetes IPVS
ClusterIP 10.x.x.x:port
NodePort NodeIP:3xxxx
Pod PodIP:targetPort
Service LB Round-robin
sessionAffinity persistent
Interview-grade explanation (short)
In IPVS mode, kube-proxy programs Linux IPVS.
Each Kubernetes Service becomes an IPVS virtual server, and each Pod endpoint becomes a real server.
NodePort and LoadBalancer services create additional virtual servers on node or external IPs that forward to the same pod backends.
All About DNS
root@ems203-m1:/home/labadmin# kubectl get svc -n kube-system coredns
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
coredns ClusterIP 10.233.0.3 <none> 53/UDP,53/TCP,9153/TCP 72d
root@ems203-m1:/home/labadmin#
#all service FQDN
kubectl get svc -A -o custom-columns="NAME:.metadata.name,NAMESPACE:.metadata.namespace,IP:.spec.clusterIP" | awk 'NR>1 {print $1"."$2".svc.cluster.local -> "$3}'
#all service FQDN
kubectl get svc -A -o custom-columns="NAME:.metadata.name,NAMESPACE:.metadata.namespace,IP:.spec.clusterIP" | awk 'NR>1 {print $1"."$2".svc.cluster.local -> "$3}'
kubernetes.default.svc.cluster.local -> 10.233.0.1
a4-credential-manager.ems.svc.cluster.local -> 10.233.48.36
a4-credential-manager-authorized.ems.svc.cluster.local -> 10.233.6.130
ad-proxy.ems.svc.cluster.local -> 10.233.12.43
longhorn-admission-webhook.longhorn-system.svc.cluster.local -> 10.233.62.118
longhorn-backend.longhorn-system.svc.cluster.local -> 10.233.42.81
longhorn-conversion-webhook.longhorn-system.svc.cluster.local -> 10.233.5.229
#All POD FQDN
kubectl get pods -A -o custom-columns="IP:.status.podIP,NAMESPACE:.metadata.namespace" | awk 'NR>1 {gsub(/\./,"-",$1); print $1"."$2".pod.cluster.local"}'
10-233-127-160.ems.pod.cluster.local
10-233-127-106.ems.pod.cluster.local
10-233-67-193.ems.pod.cluster.local
a4-credential-manager.ems.svc.cluster.local -> 10.233.48.36
a4-credential-manager-authorized.ems.svc.cluster.local -> 10.233.6.130
ad-proxy.ems.svc.cluster.local -> 10.233.12.43
longhorn-admission-webhook.longhorn-system.svc.cluster.local -> 10.233.62.118
longhorn-backend.longhorn-system.svc.cluster.local -> 10.233.42.81
longhorn-conversion-webhook.longhorn-system.svc.cluster.local -> 10.233.5.229
#All POD FQDN
kubectl get pods -A -o custom-columns="IP:.status.podIP,NAMESPACE:.metadata.namespace" | awk 'NR>1 {gsub(/\./,"-",$1); print $1"."$2".pod.cluster.local"}'
10-233-127-160.ems.pod.cluster.local
10-233-127-106.ems.pod.cluster.local
10-233-67-193.ems.pod.cluster.local
10-233-12-43.ems.pod.cluster.local
172-27-69-39.metal-lb.pod.cluster.local
10-233-127-159.observability.pod.cluster.local
10-233-101-196.observability.pod.cluster.local
172-27-69-39.metal-lb.pod.cluster.local
10-233-127-159.observability.pod.cluster.local
10-233-101-196.observability.pod.cluster.local
#how to verify
root@ems203-m1:/home/labadmin# kubectl exec -i dns-test -- nslookup 10-233-97-98.ems.pod.cluster.local
Server: 10.233.0.3
Address 1: 10.233.0.3 coredns.kube-system.svc.cluster.local
Name: 10-233-97-98.ems.pod.cluster.local
Address 1: 10.233.97.98 10-233-97-98.ems-forward-proxy.ems.svc.cluster.local
root@ems203-m1:/home/labadmin# kubectl exec -i dns-test -- nslookup 10.233.97.98
Server: 10.233.0.3
Address 1: 10.233.0.3 coredns.kube-system.svc.cluster.local
Name: 10.233.97.98
Address 1: 10.233.97.98 10-233-97-98.ems-forward-proxy.ems.svc.cluster.local
root@ems203-m1:/home/labadmin#
EXTRAAAA
--------------
root@ems203-w2:/home/labadmin# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.27.69.40:30312 rr
-> 10.233.101.197:9000 Masq 1 0 0
-> 10.233.127.66:9000 Masq 1 0 0
-> 10.233.127.184:9000 Masq 1 0 0
root@ems203-m1:/home/labadmin# kubectl get pods -A -o wide | grep 10.233.101.197
ems ems-apigw-kong2-7669c84778-v5wbg 2/2 Running 0 10d 10.233.101.197 ems203-w2 <none> <none>
root@ems203-m1:/home/labadmin# kubectl get pods -A -o wide | grep 10.233.127.66
ems ems-apigw-kong2-7669c84778-gkz9b 2/2 Running 0 10d 10.233.127.66 ems203-w8 <none> <none>
root@ems203-m1:/home/labadmin# kubectl get pods -A -o wide | grep 10.233.127.184
ems ems-apigw-kong2-7669c84778-2jzw4 2/2 Running 0 10d 10.233.127.184 ems203-w3 <none> <none>
root@ems203-m1:/home/labadmin#
kubectl get endpoints -A -o wide
kubectl get svc -A -o wide
SVC type
1.ClusterIp
2.NodePort
3.LoadBalancer
#1.ClusterIP
root@ems203-m1:/home/labadmin# kubectl describe svc nemo-adapter -n ems
Name: nemo-adapter
Namespace: ems
Labels: app.kubernetes.io/instance=nemo-adapter
app.kubernetes.io/managed-by=Helm
app.kubernetes.io/name=nemo-adapter
app.kubernetes.io/version=1.20.0-55165626
helm.sh/chart=nemo-adapter-1.20.0-55165626
Annotations: konghq.com/connect-timeout: 1800000
konghq.com/protocol: http
konghq.com/read-timeout: 1800000
konghq.com/write-timeout: 1800000
meta.helm.sh/release-name: nemo-adapter
meta.helm.sh/release-namespace: ems
Selector: app.kubernetes.io/instance=nemo-adapter,app.kubernetes.io/name=nemo-adapter
Type: ClusterIP
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.233.22.200
IPs: 10.233.22.200
Port: http 80/TCP
TargetPort: http/TCP
Endpoints: 10.233.101.131:8080,10.233.67.255:8080,10.233.98.95:8080
Session Affinity: None
Events: <none>
root@ems203-m1:/home/labadmin# kubectl get svc -A -o wide | grep nemo-adapter
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
ems nemo-adapter ClusterIP 10.233.22.200 <none> 80/TCP 72d app.kubernetes.io/instance=nemo-adapter,app.kubernetes.io/name=nemo-adapter
root@ems203-m1:/home/labadmin# kubectl get pods -A -o wide | grep 10.233.101.131
ems nemo-adapter-789fb44447-5g6fn 2/2 Running 0 3d1h 10.233.101.131 ems203-w6 <none> <none>
root@ems203-m1:/home/labadmin# kubectl get pods -A -o wide | grep 10.233.67.255
ems nemo-adapter-789fb44447-mvpnz 2/2 Running 0 3d1h 10.233.67.255 ems203-w1 <none> <none>
root@ems203-m1:/home/labadmin# kubectl get pods -A -o wide | grep 10.233.98.95
ems nemo-adapter-789fb44447-chmp8 2/2 Running 0 3d1h 10.233.98.95 ems203-w7 <none> <none>
#2.Nodeport
apiVersion: v1
kind: Service
metadata:
name: web-nodeport
spec:
type: NodePort
selector:
app: web
ports:
- port: 80
targetPort: 8080
nodePort: 30080
#3.Loadbalancer
root@ems203-m1:/home/labadmin# kubectl describe svc ems-apigw-kong-proxy -n ems
Name: ems-apigw-kong-proxy
Namespace: ems
Labels: app.kubernetes.io/instance=ems-apigw-kong
app.kubernetes.io/managed-by=Helm
app.kubernetes.io/name=kong
app.kubernetes.io/version=3.9
enable-metrics=true
helm.sh/chart=kong-2.48.0
Annotations: meta.helm.sh/release-name: ems-apigw-kong
meta.helm.sh/release-namespace: ems
metallb.universe.tf/address-pool: kong
metallb.universe.tf/allow-shared-ip: 172.27.69.57
metallb.universe.tf/ip-allocated-from-pool: kong
metallb.universe.tf/loadBalancerIPs: 172.27.69.57
Selector: app.kubernetes.io/component=app,app.kubernetes.io/instance=ems-apigw-kong,app.kubernetes.io/name=kong
Type: LoadBalancer
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.233.15.161
IPs: 10.233.15.161
LoadBalancer Ingress: 172.27.69.57
Port: kong-proxy 80/TCP
TargetPort: 8000/TCP
NodePort: kong-proxy 30379/TCP
Endpoints: 10.233.101.248:8000,10.233.127.148:8000,10.233.98.100:8000
Port: kong-proxy-tls 443/TCP
TargetPort: 8443/TCP
NodePort: kong-proxy-tls 32290/TCP
Endpoints: 10.233.101.248:8443,10.233.127.148:8443,10.233.98.100:8443
Port: stream-9000 9000/TCP
TargetPort: 9000/TCP
NodePort: stream-9000 31783/TCP
Endpoints: 10.233.101.248:9000,10.233.127.148:9000,10.233.98.100:9000
Port: stream-9443 9443/TCP
TargetPort: 9443/TCP
NodePort: stream-9443 31219/TCP
Endpoints: 10.233.101.248:9443,10.233.127.148:9443,10.233.98.100:9443
Session Affinity: None
External Traffic Policy: Cluster
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal nodeAssigned 55m (x17 over 3d2h) metallb-speaker announcing from node "ems203-w8" with protocol "layer2"
root@ems203-m1:/home/labadmin# kubectl get svc -A | grep Load
ems ems-apigw-kong-proxy LoadBalancer 10.233.15.161 172.27.69.57 80:30379/TCP,443:32290/TCP,9000:31783/TCP,9443:31219/TCP 72d
root@ems203-m1:/home/labadmin# kubectl get pods -A -o wide | grep 10.233.101.248
ems ems-apigw-kong-5b957b6fdd-t2wwd 2/2 Running 0 10d 10.233.101.248 ems203-w2 <none> <none>
root@ems203-m1:/home/labadmin# kubectl get pods -A -o wide | grep 10.233.127.148
ems ems-apigw-kong-5b957b6fdd-zqsh9 2/2 Running 0 10d 10.233.127.148 ems203-w3 <none> <none>
root@ems203-m1:/home/labadmin# kubectl get pods -A -o wide | grep 10.233.98.100
ems ems-apigw-kong-5b957b6fdd-ch5kq 2/2 Running 0 10d 10.233.98.100 ems203-w7 <none> <none>
root@ems203-m1:/home/labadmin#
root@ems203-m1:/home/labadmin# kubectl exec -i dns-test -- nslookup 10-233-97-98.ems.pod.cluster.local
Server: 10.233.0.3
Address 1: 10.233.0.3 coredns.kube-system.svc.cluster.local
Name: 10-233-97-98.ems.pod.cluster.local
Address 1: 10.233.97.98 10-233-97-98.ems-forward-proxy.ems.svc.cluster.local
root@ems203-m1:/home/labadmin# kubectl exec -i dns-test -- nslookup 10.233.97.98
Server: 10.233.0.3
Address 1: 10.233.0.3 coredns.kube-system.svc.cluster.local
Name: 10.233.97.98
Address 1: 10.233.97.98 10-233-97-98.ems-forward-proxy.ems.svc.cluster.local
root@ems203-m1:/home/labadmin#
EXTRAAAA
--------------
root@ems203-w2:/home/labadmin# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.27.69.40:30312 rr
-> 10.233.101.197:9000 Masq 1 0 0
-> 10.233.127.66:9000 Masq 1 0 0
-> 10.233.127.184:9000 Masq 1 0 0
root@ems203-m1:/home/labadmin# kubectl get pods -A -o wide | grep 10.233.101.197
ems ems-apigw-kong2-7669c84778-v5wbg 2/2 Running 0 10d 10.233.101.197 ems203-w2 <none> <none>
root@ems203-m1:/home/labadmin# kubectl get pods -A -o wide | grep 10.233.127.66
ems ems-apigw-kong2-7669c84778-gkz9b 2/2 Running 0 10d 10.233.127.66 ems203-w8 <none> <none>
root@ems203-m1:/home/labadmin# kubectl get pods -A -o wide | grep 10.233.127.184
ems ems-apigw-kong2-7669c84778-2jzw4 2/2 Running 0 10d 10.233.127.184 ems203-w3 <none> <none>
root@ems203-m1:/home/labadmin#
kubectl get endpoints -A -o wide
kubectl get svc -A -o wide
SVC type
1.ClusterIp
2.NodePort
3.LoadBalancer
#1.ClusterIP
root@ems203-m1:/home/labadmin# kubectl describe svc nemo-adapter -n ems
Name: nemo-adapter
Namespace: ems
Labels: app.kubernetes.io/instance=nemo-adapter
app.kubernetes.io/managed-by=Helm
app.kubernetes.io/name=nemo-adapter
app.kubernetes.io/version=1.20.0-55165626
helm.sh/chart=nemo-adapter-1.20.0-55165626
Annotations: konghq.com/connect-timeout: 1800000
konghq.com/protocol: http
konghq.com/read-timeout: 1800000
konghq.com/write-timeout: 1800000
meta.helm.sh/release-name: nemo-adapter
meta.helm.sh/release-namespace: ems
Selector: app.kubernetes.io/instance=nemo-adapter,app.kubernetes.io/name=nemo-adapter
Type: ClusterIP
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.233.22.200
IPs: 10.233.22.200
Port: http 80/TCP
TargetPort: http/TCP
Endpoints: 10.233.101.131:8080,10.233.67.255:8080,10.233.98.95:8080
Session Affinity: None
Events: <none>
root@ems203-m1:/home/labadmin# kubectl get svc -A -o wide | grep nemo-adapter
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
ems nemo-adapter ClusterIP 10.233.22.200 <none> 80/TCP 72d app.kubernetes.io/instance=nemo-adapter,app.kubernetes.io/name=nemo-adapter
root@ems203-m1:/home/labadmin# kubectl get pods -A -o wide | grep 10.233.101.131
ems nemo-adapter-789fb44447-5g6fn 2/2 Running 0 3d1h 10.233.101.131 ems203-w6 <none> <none>
root@ems203-m1:/home/labadmin# kubectl get pods -A -o wide | grep 10.233.67.255
ems nemo-adapter-789fb44447-mvpnz 2/2 Running 0 3d1h 10.233.67.255 ems203-w1 <none> <none>
root@ems203-m1:/home/labadmin# kubectl get pods -A -o wide | grep 10.233.98.95
ems nemo-adapter-789fb44447-chmp8 2/2 Running 0 3d1h 10.233.98.95 ems203-w7 <none> <none>
#2.Nodeport
apiVersion: v1
kind: Service
metadata:
name: web-nodeport
spec:
type: NodePort
selector:
app: web
ports:
- port: 80
targetPort: 8080
nodePort: 30080
#3.Loadbalancer
root@ems203-m1:/home/labadmin# kubectl describe svc ems-apigw-kong-proxy -n ems
Name: ems-apigw-kong-proxy
Namespace: ems
Labels: app.kubernetes.io/instance=ems-apigw-kong
app.kubernetes.io/managed-by=Helm
app.kubernetes.io/name=kong
app.kubernetes.io/version=3.9
enable-metrics=true
helm.sh/chart=kong-2.48.0
Annotations: meta.helm.sh/release-name: ems-apigw-kong
meta.helm.sh/release-namespace: ems
metallb.universe.tf/address-pool: kong
metallb.universe.tf/allow-shared-ip: 172.27.69.57
metallb.universe.tf/ip-allocated-from-pool: kong
metallb.universe.tf/loadBalancerIPs: 172.27.69.57
Selector: app.kubernetes.io/component=app,app.kubernetes.io/instance=ems-apigw-kong,app.kubernetes.io/name=kong
Type: LoadBalancer
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.233.15.161
IPs: 10.233.15.161
LoadBalancer Ingress: 172.27.69.57
Port: kong-proxy 80/TCP
TargetPort: 8000/TCP
NodePort: kong-proxy 30379/TCP
Endpoints: 10.233.101.248:8000,10.233.127.148:8000,10.233.98.100:8000
Port: kong-proxy-tls 443/TCP
TargetPort: 8443/TCP
NodePort: kong-proxy-tls 32290/TCP
Endpoints: 10.233.101.248:8443,10.233.127.148:8443,10.233.98.100:8443
Port: stream-9000 9000/TCP
TargetPort: 9000/TCP
NodePort: stream-9000 31783/TCP
Endpoints: 10.233.101.248:9000,10.233.127.148:9000,10.233.98.100:9000
Port: stream-9443 9443/TCP
TargetPort: 9443/TCP
NodePort: stream-9443 31219/TCP
Endpoints: 10.233.101.248:9443,10.233.127.148:9443,10.233.98.100:9443
Session Affinity: None
External Traffic Policy: Cluster
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal nodeAssigned 55m (x17 over 3d2h) metallb-speaker announcing from node "ems203-w8" with protocol "layer2"
root@ems203-m1:/home/labadmin# kubectl get svc -A | grep Load
ems ems-apigw-kong-proxy LoadBalancer 10.233.15.161 172.27.69.57 80:30379/TCP,443:32290/TCP,9000:31783/TCP,9443:31219/TCP 72d
root@ems203-m1:/home/labadmin# kubectl get pods -A -o wide | grep 10.233.101.248
ems ems-apigw-kong-5b957b6fdd-t2wwd 2/2 Running 0 10d 10.233.101.248 ems203-w2 <none> <none>
root@ems203-m1:/home/labadmin# kubectl get pods -A -o wide | grep 10.233.127.148
ems ems-apigw-kong-5b957b6fdd-zqsh9 2/2 Running 0 10d 10.233.127.148 ems203-w3 <none> <none>
root@ems203-m1:/home/labadmin# kubectl get pods -A -o wide | grep 10.233.98.100
ems ems-apigw-kong-5b957b6fdd-ch5kq 2/2 Running 0 10d 10.233.98.100 ems203-w7 <none> <none>
root@ems203-m1:/home/labadmin#
Comments
Post a Comment