Welcome to the Linux Foundation Forum!

Lab 11.2. Why two services have same endpoints?

Hi!

I'm trying to make Lab 11.2. Most steps are ok except ones where different configuration for web-one and web-two are needed.

Here are configs:
1. web-one.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-one
  labels:
    system: secondary
spec:
  selector:
    matchLabels:
      system: secondary
  replicas: 1
  template:
    metadata:
      labels:
        system: secondary
    spec:
      containers:
      - image: nginx:1.20.1
        imagePullPolicy: Always
        name: nginx
        ports:
        - containerPort: 80
          protocol: TCP
  1. web-two.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-two
  labels:
    system: secondary
spec:
  selector:
    matchLabels:
      system: secondary
  replicas: 1
  template:
    metadata:
      labels:
        system: secondary
    spec:
      containers:
      - image: nginx:1.20.1
        imagePullPolicy: Always
        name: nginx
        ports:
        - containerPort: 80
          protocol: TCP

Both created successfully and exposed:

[07:57][email protected][~]$ kubectl create -f web-one.yaml 
deployment.apps/web-one created
[07:57][email protected][~]$ kubectl create -f web-two.yaml 
deployment.apps/web-two created

[07:58][email protected][~]$ kubectl get pods
NAME                                       READY   STATUS             RESTARTS       AGE
myingress-ingress-nginx-controller-459tg   1/1     Running            0              72m
myingress-ingress-nginx-controller-855vf   1/2     CrashLoopBackOff   9 (113s ago)   21m
web-one-84655f9947-vcs4p                   1/1     Running            0              56s
web-two-84655f9947-kfsrm                   1/1     Running            0              52s

[07:58][email protected][~]$ kubectl expose deployment web-one --type=ClusterIP --port=80
service/web-one exposed
[07:58][email protected][~]$ kubectl expose deployment web-two --type=ClusterIP --port=80
service/web-two exposed

[08:00][email protected][~]$ kubectl get svc
NAME                                           TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
kubernetes                                     ClusterIP      10.96.0.1        <none>        443/TCP                      30d
myingress-ingress-nginx-controller             LoadBalancer   10.101.135.134   <pending>     80:30796/TCP,443:30645/TCP   74m
myingress-ingress-nginx-controller-admission   ClusterIP      10.110.32.128    <none>        443/TCP                      74m
web-one                                        ClusterIP      10.97.84.234     <none>        80/TCP                       2m19s
web-two                                        ClusterIP      10.107.37.129    <none>        80/TCP                       2m14s

[08:01][email protected][~]$ kubectl get ep
NAME                                           ENDPOINTS                            AGE
kubernetes                                     192.168.56.108:6443                  30d
myingress-ingress-nginx-controller             192.168.77.30:443,192.168.77.30:80   75m
myingress-ingress-nginx-controller-admission   192.168.77.30:8443                   75m
web-one                                        192.168.77.35:80,192.168.77.36:80    3m24s
web-two                                        192.168.77.35:80,192.168.77.36:80    3m19s

As you see at last command output, web-one and web-two are mixed. I definitely missed something.

Could anybody help?

Answers

  • Use different label for web-one Deployment ?

  • serewicz
    serewicz Posts: 971

    Hello,

    What is the issue, in particular. The same deployment may have several services. Which is the step that is the problem? I want to be sure to help you on the correct step.

    Regards,

  • chrispokorni
    chrispokorni Posts: 1,217

    Hi @Gim6626,

    Both Deployment definition files show the same label and selector. Two operators with the same label causes resource management conflicts.

    You can revisit the two Deployment definition files and correct the labels and selectors, or create both deployments via imperative commands - much easier and labels will be correctly assigned.

    Regards,
    -Chris

Categories

Upcoming Training