---# https://kubernetes.io/docs/concepts/services-networking/service/#nodeportapiVersion:v1kind:Servicemetadata:name:service-node-port-servicespec:type:NodePortselector:app:MyAppports:-port:80# By default and for convenience, the `targetPort` is set to the same value as the `port` field.targetPort:80# Optional field.nodePort:30007# Optional field. By default and for convenience, the Kubernetes control plane will allocate a port from a range (default: 30000-32767)
Pod.spec.subdomain/
subdomain.yaml
---# Taken from: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-hostname-and-subdomain-fields# Currently when a pod is created, its hostname is the Pod's metadata.name value.# The Pod spec has an optional hostname field, which can be used to specify the Pod's hostname.# When specified, it takes precedence over the Pod's name to be the hostname of the pod.# For example, given a Pod with hostname set to "my-host", the Pod will have its hostname set to "my-host".# The Pod spec also has an optional subdomain field which can be used to specify its subdomain.# For example, a Pod with hostname set to "foo", and subdomain set to "bar", in namespace# "default", will have the fully qualified domain name (FQDN) "foo.bar.default.svc.cluster-domain.example".## If there exists a headless service in the same namespace as the pod and with the same name as the subdomain,# the cluster's DNS Server also returns an A or AAAA record for the Pod's fully qualified hostname.# For example, given a Pod with the hostname set to "subdomain-simple-hostname-1" and the subdomain# set to "subdomain-simple-subdomain-service", and a headless Service named "subdomain-simple-subdomain-service"# in the same namespace, the pod will see its own FQDN as# "subdomain-simple-hostname-1.subdomain-simple-subdomain-service.default.svc.cluster-domain.example".# DNS serves an A or AAAA record at that name, pointing to the Pod's IP.# Both pods "subdomain-simple-pod-1" and "subdomain-simple-pod-2" can have their distinct A or AAAA records.---apiVersion:v1kind:Servicemetadata:name:subdomain-simple-subdomain-servicespec:clusterIP:None# A headless serviceports:-name:subdomain-simple-port-name# Actually, no port is needed.port:1234targetPort:1234selector:name:subdomain-simple-selector---apiVersion:v1kind:Podmetadata:labels:name:subdomain-simple-selectorname:subdomain-simple-pod-1spec:containers:-command:-sleep-"3600"image:busyboxname:subdomain-simple-container-1hostname:subdomain-simple-hostname-1subdomain:subdomain-simple-subdomain-service---apiVersion:v1kind:Podmetadata:name:subdomain-simple-pod-2labels:name:subdomain-simple-selectorspec:containers:-command:-sleep-"3600"image:busyboxname:subdomain-simple-container-2hostname:subdomain-simple-hostname-2subdomain:subdomain-simple-subdomain-service
headless-service/
headless-service.yaml
# Example of a headless service.# To see the difference, exec onto the headless service app, and do:## nslookup headless-service-normal-service# nslookup headless-service-headless-service## from the dns-debug service (does not work from the deployed app itself - not sure why)---apiVersion:v1kind:Servicemetadata:name:headless-service-normal-servicespec:selector:app:headless-service-appports:-protocol:TCPport:80targetPort:3000---apiVersion:v1kind:Servicemetadata:name:headless-service-headless-servicespec:clusterIP:None# This marks this service out as a headless serviceselector:app:headless-service-appports:-protocol:TCPport:80targetPort:3000---apiVersion:apps/v1kind:Deploymentmetadata:name:headless-service-deploymentlabels:app:headless-service-appspec:replicas:2selector:matchLabels:app:headless-service-apptemplate:metadata:labels:app:headless-service-appspec:containers:-command:-sleep-"3600"image:busyboxname:headless-service-appports:-containerPort:3000---# This pod allows us to do the DNS lookup# https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/apiVersion:v1kind:Podmetadata:name:headless-service-dnsutils-podspec:containers:-command:-sleep-"3600"image:gcr.io/kubernetes-e2e-test-images/dnsutils:1.3name:dnsutils
spec.clusterIP/
headless-service.yaml
# Example of a headless service.# To see the difference, exec onto the headless service app, and do:## nslookup headless-service-normal-service# nslookup headless-service-headless-service## from the dns-debug service (does not work from the deployed app itself - not sure why)---apiVersion:v1kind:Servicemetadata:name:headless-service-normal-servicespec:selector:app:headless-service-appports:-protocol:TCPport:80targetPort:3000---apiVersion:v1kind:Servicemetadata:name:headless-service-headless-servicespec:clusterIP:None# This marks this service out as a headless serviceselector:app:headless-service-appports:-protocol:TCPport:80targetPort:3000---apiVersion:apps/v1kind:Deploymentmetadata:name:headless-service-deploymentlabels:app:headless-service-appspec:replicas:2selector:matchLabels:app:headless-service-apptemplate:metadata:labels:app:headless-service-appspec:containers:-command:-sleep-"3600"image:busyboxname:headless-service-appports:-containerPort:3000---# This pod allows us to do the DNS lookup# https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/apiVersion:v1kind:Podmetadata:name:headless-service-dnsutils-podspec:containers:-command:-sleep-"3600"image:gcr.io/kubernetes-e2e-test-images/dnsutils:1.3name:dnsutils