Skip to content

Instantly share code, notes, and snippets.

@s1061123
Last active January 27, 2020 05:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save s1061123/bfa450cb28a923c8624360ae17e5e522 to your computer and use it in GitHub Desktop.
Save s1061123/bfa450cb28a923c8624360ae17e5e522 to your computer and use it in GitHub Desktop.
K8s EndpointSlice demo (with custom controller case)
[centos@kube-master ~]$ cat svc-nginx-k8s.yml
---
kind: Service
apiVersion: v1
metadata:
name: k8s-nginx
labels:
endpointslice-controller.k8s.io: multus
spec:
selector:
app: k8s-nginx
ports:
- protocol: TCP
port: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: k8s-nginx
spec:
selector:
matchLabels:
app: k8s-nginx
replicas: 1
template:
metadata:
labels:
app: k8s-nginx
spec:
containers:
- name: k8s-nginx
image: nginx
ports:
- containerPort: 80
imagePullPolicy: IfNotPresent
[centos@kube-master ~]$ kubectl create -f svc-nginx-k8s.yml
service/k8s-nginx created
deployment.apps/k8s-nginx created
[centos@kube-master ~]$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
k8s-nginx ClusterIP 10.104.101.10 <none> 80/TCP 10s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 39h
[centos@kube-master ~]$ kubectl get endpointslices.discovery.k8s.io --show-labels
NAME ADDRESSTYPE PORTS ENDPOINTS AGE LABELS
k8s-nginx-7lrfc IPv4 80 10.244.1.9 16s endpointslice.kubernetes.io/managed-by=endpointslice-controller.k8s.io,kubernetes.io/service-name=k8s-nginx
kubernetes IPv4 6443 192.168.122.76 39h kubernetes.io/service-name=kubernetes
### Change the endpointslice labels ('endpointslice.kubernetes.io/managed-by': 'endpointslice-controller.k8s.io' -> 'customcontroller-1')
[centos@kube-master ~]$ kubectl patch endpointslices.discovery.k8s.io/k8s-nginx-7lrfc -p '{"metadata": {"labels": { "endpointslice.kubernetes.io/managed-by": "customcontroller-1" }}}'
endpointslice.discovery.k8s.io/k8s-nginx-7lrfc patched
[centos@kube-master ~]$ kubectl get endpointslices.discovery.k8s.io --show-labels
NAME ADDRESSTYPE PORTS ENDPOINTS AGE LABELS
k8s-nginx-7lrfc IPv4 80 10.244.1.9 41s endpointslice.kubernetes.io/managed-by=customcontroller-1,kubernetes.io/service-name=k8s-nginx
kubernetes IPv4 6443 192.168.122.76 39h kubernetes.io/service-name=kubernetes
[centos@kube-master ~]$ kubectl scale --replicas=3 deploy/k8s-nginx
deployment.apps/k8s-nginx scaled
### After scale, k8s endpointslice controller creates new endpointslice because k8s endpointslice controller ignores previous by label change.
[centos@kube-master ~]$ kubectl get endpointslices.discovery.k8s.io --show-labels
NAME ADDRESSTYPE PORTS ENDPOINTS AGE LABELS
k8s-nginx-7lrfc IPv4 80 10.244.1.9 54s endpointslice.kubernetes.io/managed-by=customcontroller-1,kubernetes.io/service-name=k8s-nginx
k8s-nginx-9fg6w IPv4 80 10.244.1.9,10.244.2.11,10.244.1.10 6s endpointslice.kubernetes.io/managed-by=endpointslice-controller.k8s.io,kubernetes.io/service-name=k8s-nginx
kubernetes IPv4 6443 192.168.122.76 39h kubernetes.io/service-name=kubernetes
[centos@kube-master ~]$
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment