kubectl expose
简介
将资源公开为新的 Kubernetes 服务。
基于名称查找 Deployment、Service、ReplicaSet、ReplicationController 或 Pod, 并将该资源的选择算符用作指定端口上新服务的选择算符。 只有当 Deployment 或 ReplicaSet 的选择算符可转换为服务支持的选择算符 (即选择算符仅包含 matchLabels 部分)时,才会将其公开为服务。 请注意,如果未通过 --port 指定端口且所公开的资源有多个端口, 则新服务将重用所有这些端口。此外,如果未指定标签,新服务将重用它所公开的资源的标签。
可能的资源包括(不区分大小写):
pod (po),service (svc),replicationcontroller (rc),deployment (deploy),replicaset (rs)
kubectl expose 命令的格式为:
kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP|SCTP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type]
示例
# 为多副本的 nginx 创建一个服务,服务端口为 80,通过端口 8000 连接到容器
kubectl expose rc nginx --port=80 --target-port=8000
# 为在 "nginx-controller.yaml" 中以 type 和 name 指定的 ReplicationController 创建一个服务
# 服务端口为 80,通过端口 8000 连接到容器
kubectl expose -f nginx-controller.yaml --port=80 --target-port=8000
# 为名为 valid-pod 的 Pod 创建一个服务,服务端口为 444,名称为 "frontend"
kubectl expose pod valid-pod --port=444 --name=frontend
# 基于上述服务创建第二个服务,将容器端口 8443 公开为端口 443,名称为 "nginx-https"
kubectl expose service nginx --port=443 --target-port=8443 --name=nginx-https
# 为在端口 4100 上平衡 UDP 流量的多副本流应用创建一个服务,名称为 “video-stream”
kubectl expose rc streamer --port=4100 --protocol=UDP --name=video-stream
# 为使用 ReplicaSet 的多副本 nginx 创建一个服务,服务端口为 80,通过端口 8000 连接到容器
kubectl expose rs nginx --port=80 --target-port=8000
# 为 nginx Deployment 创建一个服务,服务端口为 80,通过端口 8000 连接到容器
kubectl expose deployment nginx --port=80 --target-port=8000
选项
--allow-missing-template-keys 默认值:true | |
如果为 true,在模板中字段或映射键缺失时忽略模板中的错误。 仅适用于 golang 和 jsonpath 输出格式。 |
|
--cluster-ip string | |
要指派给服务的 ClusterIP。留空表示自动分配,或设置为 “None” 以创建无头服务。 |
|
--dry-run string[="unchanged"] 默认值:"none" | |
必须是 "none"、"server" 或 "client"。如果是 client 策略,仅打印将要发送的对象,而不实际发送。 如果是 server 策略,提交服务器端请求而不持久化资源。 |
|
--external-ip string | |
服务要接受的附加外部 IP 地址(不由 Kubernetes 管理)。 如果此 IP 被路由到某个节点,则除了生成的服务 IP 之外,还可以通过此 IP 访问服务。 |
|
--field-manager string 默认值:"kubectl-expose" | |
用于跟踪字段属主关系的管理器的名称。 |
|
-f, --filename strings | |
文件名、目录或文件 URL 列表,用于标识要公开服务的资源。 |
|
-h, --help | |
expose 操作的帮助命令。 |
|
-k, --kustomize string | |
处理 kustomization 目录。此标志不能与 -f 或 -R 一起使用。 |
|
-l, --labels string | |
要应用到此子命令所创建的服务上的标签。 |
|
--load-balancer-ip string | |
要指派给负载均衡器的 IP。如果为空,将创建并使用一个临时 IP(具体取决于云提供商)。 |
|
--name string | |
新建对象的名称。 |
|
-o, --output string | |
输出格式。可选值为: json、yaml、name、go-template、go-template-file、template、templatefile、jsonpath、jsonpath-as-json、jsonpath-file。 |
|
--override-type string 默认值:"merge" | |
用于覆盖已生成对象的方法:json、merge 或 strategic。 |
|
--overrides string | |
用于覆盖已生成对象的内联 JSON。如果此字段非空,它将用于覆盖已生成的对象。 要求对象提供一个有效的 apiVersion 字段。 |
|
--port string | |
应该用于提供服务的端口。如果不指定,则从正被公开的资源复制。 |
|
--protocol string | |
要创建的服务的网络协议。默认是 'TCP'。 |
|
-R, --recursive | |
以递归方式处理在 -f、--filename 中给出的目录。当你想要管理位于同一目录中的相关清单时很有用。 |
|
--save-config | |
如果为 true,则当前对象的配置将被保存在其注解中。否则,注解将保持不变。 当你希望后续对此对象执行 `kubectl apply` 操作时,此标志很有用。 |
|
--selector string | |
指定服务所用的标签选择算符。仅支持基于等式的选择算符需求。 如果为空(默认值),则从 ReplicationController 或 ReplicaSet 中推断选择算符。 |
|
--session-affinity string | |
如果非空,将服务的会话亲和性设置为此值;有效值为:'None'、'ClientIP'。 |
|
--show-managed-fields | |
如果为 true,在以 JSON 或 YAML 格式打印对象时保留 managedFields。 |
|
--target-port string | |
容器上服务应将流量导向的端口名称或端口号。可选。 |
|
--template string | |
当 -o=go-template、-o=go-template-file 时使用的模板字符串或模板文件路径。 模板格式为 golang 模板 [http://golang.org/pkg/text/template/#pkg-overview]。 |
|
--type string | |
此服务的类别:ClusterIP、NodePort、LoadBalancer 或 ExternalName。默认是 “ClusterIP”。 |
Parent Options Inherited
--as string | |
操作所用的伪装用户名。用户可以是常规用户或命名空间中的服务账号。 |
|
--as-group strings | |
操作所用的伪装用户组,此标志可以被重复设置以指定多个组。 |
|
--as-uid string | |
操作所用的伪装 UID。 |
|
--cache-dir string 默认值:"$HOME/.kube/cache" | |
默认缓存目录。 |
|
--certificate-authority string | |
证书机构的证书文件的路径。 |
|
--client-certificate string | |
TLS 客户端证书文件的路径。 |
|
--client-key string | |
TLS 客户端密钥文件的路径。 |
|
--cluster string | |
要使用的 kubeconfig 集群的名称。 |
|
--context string | |
要使用的 kubeconfig 上下文的名称。 |
|
--disable-compression | |
如果为 true,则对服务器所有请求的响应不再压缩。 |
|
--insecure-skip-tls-verify | |
如果为 true,则不检查服务器证书的有效性。这将使你的 HTTPS 连接不安全。 |
|
--kubeconfig string | |
CLI 请求要使用的 kubeconfig 文件的路径。 |
|
--kuberc string | |
用于偏好设置的 kuberc 文件的路径。可以通过导出 KUBECTL_KUBERC=false 特性门控或关闭 KUBERC=off 特性来禁用此功能。 |
|
--match-server-version | |
要求服务器版本与客户端版本匹配。 |
|
-n, --namespace string | |
如果存在,则是此 CLI 请求的命名空间范围。 |
|
--password string | |
向 API 服务器进行基本身份验证所用的密码。 |
|
--profile string 默认值:"none" | |
要记录的性能分析信息。可选值为(none|cpu|heap|goroutine|threadcreate|block|mutex)。 |
|
--profile-output string 默认值:"profile.pprof" | |
性能分析信息要写入的目标文件的名称。 |
|
--request-timeout string 默认值:"0" | |
在放弃某个服务器请求之前等待的时长。非零值应包含相应的时间单位(例如 1s、2m、3h)。 值为零表示请求不会超时。 |
|
-s, --server string | |
Kubernetes API 服务器的地址和端口。 |
|
--storage-driver-buffer-duration duration 默认值:1m0s | |
对存储驱动的写入操作将被缓存的时长;缓存的操作会作为一个事务提交给非内存后端。 |
|
--storage-driver-db string 默认值:"cadvisor" | |
数据库名称。 |
|
--storage-driver-host string 默认值:"localhost:8086" | |
数据库 host:port |
|
--storage-driver-password string 默认值:"root" | |
数据库密码。 |
|
--storage-driver-secure | |
使用与数据库的安全连接。 |
|
--storage-driver-table string 默认值:"stats" | |
表名。 |
|
--storage-driver-user string 默认值:"root" | |
数据库用户名。 |
|
--tls-server-name string | |
服务器证书验证所用的服务器名称。如果未提供,则使用与服务器通信所用的主机名。 |
|
--token string | |
向 API 服务器进行身份验证的持有者令牌。 |
|
--user string | |
要使用的 kubeconfig 用户的名称。 |
|
--username string | |
向 API 服务器进行基本身份验证时所用的用户名。 |
|
--version version[=true] | |
--version, --version=raw 打印版本信息并退出;--version=vX.Y.Z... 设置报告的版本。 |
|
--warnings-as-errors | |
将从服务器收到的警告视为错误,并以非零退出码退出。 |
另请参见
- kubectl - kubectl 控制 Kubernetes 集群管理器
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.