我想通过k8s Deployment对象管理我的部署来部署应用程序集群。文档让我非常困惑。我的基本布局具有以下独立扩展的组件:
从技术上讲,以上所有4个都属于独立缩放的独立窗格。
我的问题是:
pod.yml
个文件,然后以deployment.yml
文件的形式引用它们,或者部署文件是否也可以嵌入pod定义?spec
的{{1}}部分等同于定义一个 pod。那是对的吗?如果我想以声明方式描述多pod部署,该怎么办?我是否需要多个deployment.yml文件?答案 0 :(得分:27)
Pagids的答案有大部分基础知识。您应该为您的方案创建4 Deployments
。每个部署都将创建一个ReplicaSet
,用于安排和监督PODs
的{{1}}集合。
每个Deployment
很可能还需要在其前面Deployment
才能进行访问。我通常创建一个yaml文件,其中包含Service
和相应的Deployment
。以下是我使用的Service
的示例:
nginx.yaml
这里有一些额外的信息需要澄清:
apiVersion: v1
kind: Service
metadata:
annotations:
service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
name: nginx
labels:
app: nginx
spec:
type: NodePort
ports:
- port: 80
name: nginx
targetPort: 80
nodePort: 32756
selector:
app: nginx
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginxdeployment
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginxcontainer
image: nginx:latest
imagePullPolicy: Always
ports:
- containerPort: 80
不是可扩展单位。计划POD的POD
是。Deployment
意味着代表一组POD一起完成一个目的。Deployment
。Deployments
的{{1}},您必须创建服务。Deployment
(例如,用于数据库服务)。答案 1 :(得分:12)
您可以对API reference使用Kubernetes Deployment,并且您会发现spec
- > template
字段的类型为PodTemplateSpec
}以及相关的评论(模板描述了将要创建的pod。)它会回答你的问题。当然可以在Deployment user guide中找到更长的描述。
回答你的问题......
1)Pods
由Deployment
管理,并且单独定义它们并不合理,因为它们是由部署按需创建的。请记住,可能有更多相同pod类型的副本。
2)对于列表中的每个应用程序,您必须定义一个Deployment
- 这对于差异副本计数和应用程序推出也很有意义。
3)您还没有问过但相关的 - 以及单独的Deployments
您的每个应用程序还需要一个专用的Service
所以其他人可以访问它。
答案 2 :(得分:0)
附加信息:
API server 使用部署
UI服务器使用部署
Redis缓存使用statefulset
定时器/计划任务服务器可能使用 statefulset(如果您的服务有一些状态)