基于容器、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分钟
- 将podman容器部署到Kubernetes集群:
podman kube apply --file=<容器-kube-yaml>
- 将podman Pod部署到Kubernetes集群:
podman kube apply --file=<Pod-kube-yaml>
- 将podman卷部署到Kubernetes集群:
podman kube apply --file=<卷-kube-yaml>
- 使用服务将podman容器部署到Kubernetes集群:
podman kube apply --file=<容器-kube-yaml> --service
- 使用kubeconfig文件将podman容器部署到Kubernetes集群:
podman kube apply --file=<容器-kube-yaml> --kubeconfig=<kubeconfig-路径>
- 使用自定义命名空间将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将在部署到集群的服务规范中分配一个随机端口。