Generate Kubernetes Service Yamls

In this tutorial, we will explore how we can generate kubernetes service yamls and also expose the service from cli using kubectl.

Generate Kubernetes Service Yamls

Generate service yaml with type Nodeport , name httpd and selector app: httpd

┌──(ved㉿lb)-[~]
└─$ kubectl create service nodeport httpd --tcp=80:80 --dry-run=client -o yaml 
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: httpd
  name: httpd
spec:
  ports:
  - name: 80-80
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: httpd
  type: NodePort
status:
  loadBalancer: {}

Generate a service yaml with type: NodePort, name: ‘nginx’ & selector app: nginx with specifying nodeport parameter

┌──(ved㉿lb)-[~]
└─$ kubectl create service nodeport nginx --tcp=80:80 --node-port=30080 --dry-run=client -o yaml

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: nginx
  name: nginx
spec:
  ports:
  - name: 80-80
    nodePort: 30080
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: NodePort
status:
  loadBalancer: {}

Generate a service yaml with type: ClusterIP

┌──(ved㉿lb)-[~]
└─$ kubectl create service clusterip nginx --tcp=80:80 --dry-run=client -o yaml
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: nginx
  name: nginx
spec:
  ports:
  - name: 80-80
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: ClusterIP
status:
  loadBalancer: {}

Generate Kubernetes service yamls to expose/access running pods/deployment

Expose pod named mypod on port 80 and container port=8080 with type=NodePort

┌──(ved㉿lb)-[~]
└─$ kubectl expose pod mypod --port=80 --container-port=8080 --type=NodePort --dry-run=client -o
 yaml
Flag --container-port has been deprecated, --container-port will be removed in the future, please use --target-port instead
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    run: mypod
  name: mypod
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    run: mypod
  type: NodePort
status:
  loadBalancer: {}

Expose deployment with service type NodePort

┌──(ved㉿lb)-[~]
└─$ kubectl expose deployment mydep --port=80 --target-port=8080 --type=NodePort --dry-run=client -o yaml
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: mydep
  name: mydep
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: mydep
  type: NodePort
status:
  loadBalancer: {}

Expose pod created from yaml defintion with type NodePort

┌──(ved㉿lb)-[~]
└─$ kubectl expose -f pod.yml --port=80 --target-port=8080 --type=NodePort --dry-run=client -o y
aml
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    run: mypod
  name: mypod
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    run: mypod
  type: NodePort
status:
  loadBalancer: {}

Expose pod with type=ClusterIP

┌──(ved㉿lb)-[~]
└─$ kubectl expose pod mypod --port=80 --target-port=8080 --type=ClusterIP --dry-run=client -o yaml
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    run: mypod
  name: mypod
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    run: mypod
  type: ClusterIP
status:
  loadBalancer: {}

Expose deployment with type=ClusterIP

┌──(ved㉿lb)-[~]
└─$ kubectl expose deployment mydep --port=80 --target-port=8080 --type=ClusterIP --dry-run=client -o yaml
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: mydep
  name: mydep
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: mydep
  type: ClusterIP
status:
  loadBalancer: {}

Expose pod with type=Cluster from pod definition

┌──(ved㉿lb)-[~]
└─$ kubectl expose -f pod.yml  --port=80 --target-port=8080 --type=ClusterIP --dry-run=client -o yaml 
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    run: mypod
  name: mypod
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    run: mypod
  type: ClusterIP
status:
  loadBalancer: {}

Conclusion

We have explored how to create Kubernetes service yamls for different applications.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments