跳到主要内容

基于容器、Pod或卷的Kubernetes YAML应用于Kubernetes集群

概述

podman-kube-apply- 将基于容器、Pod或卷的Kubernetes YAML应用于Kubernetes集群 podman kube apply [选项][*容器...* | *Pod...* | *卷...*]

描述

podman kube apply 将podman容器、Pod或卷部署到Kubernetes集群。使用--file选项可以将Kubernetes YAML(v1规范)部署到Kubernetes集群。 请注意,可以使用Kubernetes YAML文件通过podman-play-kube(1)在Podman中运行部署。

选项

--ca-cert-file=ca证书文件路径 | "insecure"

Kubernetes集群的CA证书文件路径。通常,kubeconfig包含CA证书文件数据,如果kubeconfig中有可用数据,generate kube会自动获取它。如果没有可用的CA证书文件数据,请将其设置为insecure以绕过证书验证。

--file, -f=kube yaml文件路径

要部署到Kubernetes集群的Kubernetes YAML文件的路径。可以使用podman kube generate命令生成此文件。输入可以是yaml文件的形式,也可以是stdin。对于stdin,请使用--file=-

--kubeconfig, -k=kubeconfig文件路径

用于将生成的kube yaml部署到Kubernetes集群时使用的kubeconfig文件的路径。环境变量KUBECONFIG也可以用于设置kubeconfig文件的路径。 注意:kubeconfig可以包含多个集群配置,但kube generate始终选择给定kubeconfig中的第一个集群配置。

--ns=命名空间

在Kubernetes集群中部署生成的kube yaml的工作负载的命名空间或项目。

--service, -s

用于为正在部署到集群的相应容器或Pod创建服务。特别是,如果容器或Pod具有portmap绑定,则服务规范包括NodePort声明以公开服务。

示例

将podman卷和容器部署到Kubernetes集群的“default”命名空间中。

$ podman kube apply --kubeconfig /tmp/kubeconfig myvol vol-test-1
正在部署到集群...
已成功将工作负载部署到集群!
$ kubectl get pods
名称 就绪 状态 重启次数 时长
vol-test-1-pod 1/1 运行中 0 9分钟

将Kubernetes YAML文件部署到Kubernetes集群的“default”命名空间中。

$ podman kube apply --kubeconfig /tmp/kubeconfig -f vol.yaml
正在部署到集群...
已成功将工作负载部署到集群!
$ kubectl get pods
名称 就绪 状态 重启次数 时长
vol-test-2-pod 1/1 运行中 0 9分钟

将Kubernetes YAML文件部署到Kubernetes集群的“test1”命名空间中。

$ podman kube apply --kubeconfig /tmp/kubeconfig --ns test1 vol-test-3
正在部署到集群...
已成功将工作负载部署到集群!
$ kubectl get pods --namespace test1
名称 就绪 状态 重启次数 时长
vol-test-3-pod 1/1 运行中 0 9分钟
  1. 将podman容器部署到Kubernetes集群:
podman kube apply --file=<容器-kube-yaml>
  1. 将podman Pod部署到Kubernetes集群:
podman kube apply --file=<Pod-kube-yaml>
  1. 将podman卷部署到Kubernetes集群:
podman kube apply --file=<卷-kube-yaml>
  1. 使用服务将podman容器部署到Kubernetes集群:
podman kube apply --file=<容器-kube-yaml> --service
  1. 使用kubeconfig文件将podman容器部署到Kubernetes集群:
podman kube apply --file=<容器-kube-yaml> --kubeconfig=<kubeconfig-路径>
  1. 使用自定义命名空间将podman容器部署到Kubernetes集群:
podman kube apply --file=<容器-kube-yaml> --ns=<自定义-命名空间>

另请参阅

podman(1), podman-container(1), podman-pod(1), podman-kube-play(1), podman-kube-generate(1)

历史

2022年9月,最初由Urvashi Mohnani整理编写。

注意事项

  • Kubernetes集群必须可访问,并且用户必须具有部署资源的必要权限。
  • YAML文件必须采用Kubernetes v1规范格式。
  • 使用--service时,请确保podman容器或Pod已定义了portmap绑定,以便正确公开服务。
  • --ns选项允许您为部署的资源指定自定义命名空间。如果未指定,则使用默认命名空间。
  • --kubeconfig选项允许您指定用于身份验证和集群配置的自定义kubeconfig文件。如果未指定,Podman将尝试使用默认的kubeconfig位置或KUBECONFIG环境变量。
  • --ca-cert-file选项在Kubernetes集群使用自签名CA证书或您希望绕过证书验证以进行测试时很有用。请谨慎使用,因为它会降低连接的安全性。

请查阅Podman文档和Kubernetes文档以获取有关使用这些命令和功能的更多详细信息。

--service (-s)

此选项用于为部署到集群的相应容器或pod创建一个服务。特别是,如果容器或pod具有portmap绑定,服务规范将包括一个NodePort声明以暴露该服务。Podman将在部署到集群的服务规范中分配一个随机端口。