Kubectl expose: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
 
(5 intermediate revisions by the same user not shown)
Line 14: Line 14:
<syntaxhighlight lang='bash'>
<syntaxhighlight lang='bash'>
kubectl [-n <namespace>] expose pod <pod-name> \
kubectl [-n <namespace>] expose pod <pod-name> \
   --port=<port> --target-port=<target-port> --name=<service-name> \
   --name=<service-name> --port=<port> --target-port=<target-port> \
   [--type=ClusterIP|NodePort|...]
   [--type=ClusterIP|NodePort|...]
</syntaxhighlight>
</syntaxhighlight>


<syntaxhighlight lang='bash'>
<syntaxhighlight lang='bash'>
kubectl expose pod httpd --port=9898 --target-port=80 --name=httpd-svc
kubectl expose pod httpd --name=httpd-svc --port=9898 --target-port=80  
</syntaxhighlight>
</syntaxhighlight>


Line 25: Line 25:


If a replication controller, deployment or replicaset are used, the command <font color=darkgray>reads their selector and re-uses it for the service being created.</font>
If a replication controller, deployment or replicaset are used, the command <font color=darkgray>reads their selector and re-uses it for the service being created.</font>
=Deployment=
<syntaxhighlight lang='text'>
kubectl expose deployment my-deployment --name=my-service --type=ClusterIP
</syntaxhighlight>
<syntaxhighlight lang='bash'>
kubectl expose deployment http-server --port=9999 --type=NodePort --name=http-service --overrides '{ "apiVersion": "v1","spec":{"ports": [{"port":9999,"protocol":"TCP","targetPort":9999,"nodePort":30999}]}}'
</syntaxhighlight>


=Expose a Service=
=Expose a Service=
<font color=darkgray>TODO</font>
<font color=darkkhaki>TODO
</font>

Latest revision as of 18:42, 6 December 2023

Internal

Overview

expose dynamically exposes a resource, which can be a pod, another service, a deployment, replica set or a replication controller as a new service. If no service type is explicitly specified, ClusterIP is assumed. Specific service types (NodePort, LoadBalancer, or ExternalName) can be requested with --type.

Expose a Pod

If a pod is used, the command reads the pod's labels and creates a service with a matching selector. By default, if no type is specified, ClusterIP is assumed.

kubectl [-n <namespace>] expose pod <pod-name> \
  --name=<service-name> --port=<port> --target-port=<target-port> \
  [--type=ClusterIP|NodePort|...]
kubectl expose pod httpd --name=httpd-svc --port=9898 --target-port=80

Expose a Higher Level Controller

If a replication controller, deployment or replicaset are used, the command reads their selector and re-uses it for the service being created.

Deployment

kubectl expose deployment my-deployment --name=my-service --type=ClusterIP
kubectl expose deployment http-server --port=9999 --type=NodePort --name=http-service --overrides '{ "apiVersion": "v1","spec":{"ports": [{"port":9999,"protocol":"TCP","targetPort":9999,"nodePort":30999}]}}'

Expose a Service

TODO