Kubernetes(K8s)中使用Kubectl 命令行工具管理 Kubernetes 集群。 kubectl 在 $HOME/.kube 目录中查找一个名为 config 的配置文件。 可以通过设置 KUBECONFIG 环境变量或设置 --kubeconfig 参数来指定其它 kubeconfig 文件。本文主要介绍Kubernetes(K8s)中kubectl expose常用命令。

1、expose简介

kubectl expose:取一个复制控制器、服务或pod,并将其expose为一个新的Kubernetes服务。

按名称查找复制控制器、服务、复制集或pod,并使用该资源的选择器作为指定端口上新服务的选择器。只有当副本集的选择器转换为服务支持的选择器时,即当副本集选择器只包含matchLabels组件时,副本集才会被公开为服务。如果没有通过-port指定端口,并且公开的资源有多个端口,那么所有端口都将被新服务重用。另外,如果没有指定标签,新服务将重用其公开的资源中的标签。

2、Kubectl语法

kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type]

3、kubectl expose命令

1)为复制的nginx创建一个服务,该服务位于端口80上,并连接到端口8000上的容器

kubectl expose rc nginx --port=80 --target-port=8000

2)根据nginx-controller.yaml中指定的类型和名称为复制控制器创建一个服务,服务于80端口,并连接到8000端口的containers

kubectl expose -f nginx-controller.yaml --port=80 --target-port=8000

3)为pod valid-pod创建一个服务,它服务于端口444,名称为frontend

kubectl expose pod valid-pod --port=444 --name=frontend

4)基于上面的服务创建第二个服务,将容器端口8443公开为端口443,名称为nginx-https

kubectl expose service nginx --port=443 --target-port=8443 --name=nginx-https

5)在4100端口上为复制的流媒体应用程序创建一个名为 “video-stream” 的服务,以均衡UDP流量

kubectl expose rc streamer --port=4100 --protocol=udp --name=video-stream

6)使用复制集为复制的nginx创建一个服务,该服务位于端口80上,连接到端口8000上的容器

kubectl expose rs nginx --port=80 --target-port=8000

4、kubectl expose选项

1)选项

选项

说明

--container-port=""

--target-port的同义词

--dry-run[=false]

如果为true,则只打印将要发送的对象,而不创建它。

--external-ip=""

为服务接受的附加外部 IP 地址(不由 Kubernetes 管理)。

如果这个 IP 被路由到一个节点,除了它生成的服务 IP 之外,

这个 IP 可以访问该服务。

-f, --filename=[]

标识要公开服务的资源的文件的文件名、目录或URL

--generator="service/v2"

要使用的API生成器的名称。有两个生成器: 'service/v1' 和 'service/v2'。

它们之间的唯一区别是,v1中的服务端口被命名为 'default',

而v2中的服务端口没有命名。

默认设置是 'service/v2'。

-l, --labels=""

应用于此调用创建的服务的标签。

--load-balancer-ip=""

要分配给负载均衡器的IP。如果为空,

将创建和使用一个临时IP(特定于云提供商)。

--name=""

新创建对象的名称。

--no-headers[=false]

在使用默认输出时,不要打印标题。

-o, --output=""

输出格式。 以下之一:  json|yaml|wide|name|go-template=...

|go-template-file=...|jsonpath=...|jsonpath-file=... 

参考 golang template [template/#pkg-overview

和 jsonpath template [jsonpath.md]

--output-version=""

输出带有给定组版本的格式化对象 (例如: 'extensions/v1beta1')。

--overrides=""

生成对象的内联JSON覆盖。如果该参数非空,

则用于覆盖生成的对象。要求对象提供有效的apiVersion字段。

--port=""

服务应该在其上服务的端口。如果未指定,则从公开的资源复制

--protocol="TCP"

要创建的服务的网络协议。 默认是 'tcp'。

--record[=false]

在资源注释中记录当前kubectl命令。

--save-config[=false]

如果为true,则当前对象的配置将保存在其注释中。

当希望将来在此对象上执行kubectl apply时,这非常有用。

--selector=""

用于此服务的标签选择器。只支持基于相等的选择器要求。

如果为空(默认值),则从复制控制器或复制集推断选择器。

--session-affinity=""

如果非空,则将服务的session affinity设置为此;

legal values: 'None', 'ClientIP'

-a, --show-all[=false]

打印时,显示所有资源(默认隐藏终止的pod)。

--show-labels[=false]

打印时,将所有标签显示为最后一列(默认隐藏标签列)

--sort-by=""

如果非空,则使用此字段规范对列表类型进行排序。

字段规范表示为JSONPath表达式(例如 '{.metadata.name}')。

这个JSONPath表达式指定的API资源中的字段必须是整数或字符串。

--target-port=""

服务应该将流量导向的容器上的端口的名称或编号。可选的。

--template=""

当-o=go-template, -o=go-template-file时要使用的模板文件的模板字符串或路径。

模板格式为golang templates [template/#pkg-overview]。

--type=""

此服务的类型:ClusterIP、NodePort或LoadBalancer。

默认设置是'ClusterIP'。

2)从父命令继承的选项

选项

说明

--alsologtostderr[=false]

记录到标准错误和文件。

--certificate-authority=""

证书颁发机构的证书文件的路径。

--client-certificate=""

用于TLS的客户端证书文件的路径。

--client-key=""

用于TLS的客户端密钥文件的路径。

--cluster=""

要使用的kubeconfig集群的名称

--context=""

要使用的kubeconfig上下文的名称

--insecure-skip-tls-verify[=false]

如果为true,则不会检查服务器证书的有效性。

这将使HTTPS连接不安全。

--kubeconfig=""

用于CLI请求的kubeconfig文件的路径。

--log-backtrace-at=:0

当日志记录达到line file:N时,发出堆栈跟踪

--log-dir=""

如果非空,则将日志文件写入此目录

--log-flush-frequency=5s

两次日志刷新之间的最大秒数

--logtostderr[=true]

日志到标准错误而不是文件

--match-server-version[=false]

要求服务器版本与客户端版本匹配

--namespace=""

如果存在,则此CLI请求的名称空间作用域。

--password=""

API服务器基本身份验证密码。

-s, --server=""

Kubernetes API服务器的地址和端口

--stderrthreshold=2

达到或超过这个阈值的日志将发送到stderr

--token=""

API服务器身份验证的Bearer token。

--user=""

要使用的kubeconfig用户的名称

--username=""

API服务器基本认证的用户名。

--v=0

日志级别为V日志

--vmodule=

用逗号分隔的pattern=N个

用于文件过滤日志记录的设置列表

推荐文档

相关文档

大家感兴趣的内容

随机列表