I’m new to Kubernetes and learning about Deployments, Services, and Ingress as part of a CKAD video course. I created a YAML file for a Deployment, and a separate YAML file for a Service, and I’d like to map or hook up the Service with the Deployment. The container is a simple Nginx image, and I would like to be able to access the the Nginx server from the internal cluster IP address to begin with.
The deployment:
user@k8s-box:~/ch8$ cat ch8_deploy.yml apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: ch8app name: ch8app-nginx spec: replicas: 5 selector: matchLabels: app: ch8app strategy: rollingUpdate: maxUnavailable: 2 template: metadata: creationTimestamp: null labels: app: ch8app spec: containers: - image: nginx:latest name: nginx resources: {} status: {} The ClusterIP service:
user@k8s-box:~/ch8$ cat ch8_svc.yml apiVersion: v1 kind: Service metadata: creationTimestamp: null labels: app: ch8app name: ch8svc spec: ports: - name: "tcp80" port: 80 protocol: TCP targetPort: 80 selector: app: ch8app-nginx type: ClusterIP status: loadBalancer: {} Then I load the files:
kubectl create -f ch8_deploy.yml kubectl create -f ch8_svc.yml When I try to access port 80 with curl from the cluster internal IP address, I’m not able to connect. What am I missing in the above that is causing the mismatch? If I run the below, I’m able to connect successfully:
kubectl create -f ch8_deploy.yml kubectl expose deploy ch8app-nginx —-port=80 While the above works, it’s not something like the YAML file that I could commit to a git repo for reproducing the environment.