Kubernetes-部署可以包含服务吗?
刚读完奈杰尔·波尔顿的《库伯内特的书》,但我对服务有点困惑 是否可以以某种方式将服务添加到下面的部署清单中?或者该服务是否必须自己发布?部署的全部目的不是指定应用程序运行所需的一切吗Kubernetes-部署可以包含服务吗?,kubernetes,microservices,Kubernetes,Microservices,刚读完奈杰尔·波尔顿的《库伯内特的书》,但我对服务有点困惑 是否可以以某种方式将服务添加到下面的部署清单中?或者该服务是否必须自己发布?部署的全部目的不是指定应用程序运行所需的一切吗 apiVersion: apps/v1beta2 kind: Deployment metadata: name: hello-deploy spec: replicas: 10 selector: matchLabels: app: hello-world minReadyS
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: hello-deploy
spec:
replicas: 10
selector:
matchLabels:
app: hello-world
minReadySeconds: 10
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
template:
metadata:
labels:
app: hello-world
spec:
containers:
- name: hello-pod
image: nigelpoulton/k8sbook : latest
ports:
- containerPort: 8080
它们是不同的对象,您必须分别提交它们(HTTP POST,
kubectl apply
,…)
您可以使用以下两种技巧来最小化此操作的影响:
- 您可以使用并将其作为单个内容提交,如
--- apiVersion: apps/v1 kind: Deployment ... --- apiVersion: v1 kind: Service ...
- 有一个未记录的可嵌入多个对象的
apiVersion: v1 kind: List items: - apiVersion: apps/v1 kind: Deployment ... - apiVersion: v1 kind: Service ...
- 您可以使用更高级别的部署管理器,例如,它允许您将每个对象保存在单独的文件中,但可以在单个命令中部署它们
也许不幸的是,两个Kubernetes对象的名称与其简单的英语含义不同(部署不包括部署整个应用程序的所有步骤或部分;服务只是一个IP/DNS指针,而不是服务实现),但事实就是这样。我倾向于将Kubernetes对象名称大写,这样可以消除歧义。它们是不同的对象,您必须单独提交它们(HTTP POST,
kubectl apply,
,…)
您可以使用以下两种技巧来最小化此操作的影响:
- 您可以使用并将其作为单个内容提交,如
--- apiVersion: apps/v1 kind: Deployment ... --- apiVersion: v1 kind: Service ...
- 有一个未记录的可嵌入多个对象的
apiVersion: v1 kind: List items: - apiVersion: apps/v1 kind: Deployment ... - apiVersion: v1 kind: Service ...
- 您可以使用更高级别的部署管理器,例如,它允许您将每个对象保存在单独的文件中,但可以在单个命令中部署它们
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: hello-deploy
spec:
replicas: 10
selector:
matchLabels:
app: hello-world
minReadySeconds: 10
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
template:
metadata:
labels:
app: hello-world
spec:
containers:
- name: hello-pod
image: nigelpoulton/k8sbook : latest
ports:
- containerPort: 8080
“部署”的全部目的是管理POD/ReplicaSet的部署,包括复制、扩展、滚动更新和回滚。DeploymentController是主节点控制器管理器的一部分,它确保当前状态始终与所需状态匹配
该服务是否必须单独发布
如果您熟悉负载平衡器的术语,那么服务是前端,POD是后端。因为它是前端,所以服务将请求转发到后端(pods)
部署的全部目的不是指定应用程序运行所需的一切吗
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: hello-deploy
spec:
replicas: 10
selector:
matchLabels:
app: hello-world
minReadySeconds: 10
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
template:
metadata:
labels:
app: hello-world
spec:
containers:
- name: hello-pod
image: nigelpoulton/k8sbook : latest
ports:
- containerPort: 8080
“部署”的全部目的是管理POD/ReplicaSet的部署,包括复制、扩展、滚动更新和回滚。DeploymentController是主节点控制器管理器的一部分,它确保当前状态始终与所需状态匹配
该服务是否必须单独发布
如果您熟悉负载平衡器的术语,那么服务是前端,POD是后端。因为它是前端,所以服务将请求转发到后端(pods)