我一直用 type:deployment
创建pod但我看到一些文档使用了 type:pod
,更具体地说是the documentation for multi-container pods:
apiVersion: v1
kind: Pod
metadata:
name: ""
labels:
name: ""
namespace: ""
annotations: []
generateName: ""
spec:
? "// See 'The spec schema' for details."
: ~
但要创建pod我可以使用a deployment type:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: ""
spec:
replicas: 3
template:
metadata:
labels:
app: ""
spec:
containers:
etc
我注意到pod文档说:
create命令可用于直接创建pod,也可以通过Deployment创建pod或pod . 强烈建议您使用部署来创建容器 . 它会监视失败的pod,并根据需要启动新的pod以维持指定的数量 . 如果您不希望部署监视您的pod(例如,您的pod正在编写非持久性数据,这些数据将无法在重新启动后继续存在,或者您的pod的生命非常短暂),则可以直接创建create命令 . 注意:我们建议使用“部署”来创建窗格 . 仅当您不想创建部署时,才应使用以下说明 .
但这提出了 kind:pod
有什么用处的问题?你能以某种方式参考部署中的pod吗?我没有看到任何方法 . 看起来你使用pod获得的是一些额外的元数据,但没有任何部署选项,如 replica
或重启策略 . 没有什么好处的pod也不能创建一个带有部署的多容器pod .
2 回答
Pod和Deployment都是Kubernetes API中的完整对象 . 部署通过ReplicaSets管理创建Pod . 它归结为部署将创建具有从模板中获取的规范的Pod . 您不太可能需要直接为 生产环境 用例创建Pod .
拉德克的答案非常好,但我想从我的经验中汲取经验,你几乎从不使用 kind pod ,因为这在实践中没有任何意义 .
因为你需要一个 deployment 对象 - 或者像 replication controller 或 replicaset 这样的其他Kubernetes API对象 - 需要保持 replicas (pods)活着(这就是使用kubernetes的重点) .
您将在实践中用于典型应用的是:
Deployment object (您将指定您的应用容器/容器)将托管您的应用容器以及其他一些规格 .
Service object (就像分组对象一样,为具有特定标签的
pods
提供所谓的虚拟IP(群集IP) - 而pods
基本上就是您使用前 deployment 对象部署的应用容器) .您需要拥有 service 对象,因为部署对象中的
pods
可以被杀死,按比例放大和缩小,并且您不能依赖它们的IP地址,因为它们不会持久化 .所以你需要一个像 service 这样的对象,它给那些
pods
一个稳定的IP .只是想给你一些关于
pods
的背景知识,所以你知道事情是如何协同工作的 .希望为你清除一些东西,不久前我在你的鞋子里:)