Mug*_*gen 3 kubernetes kubernetes-deployment
我已经浏览了以下docomentation页面:https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
示例部署yaml如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
Run Code Online (Sandbox Code Playgroud)
我们可以在这里看到app: nginx
提到标签的三个不同时间.
为什么我们需要每一个?我从官方文档中很难理解它.
第一个标签:
部署标签,用于选择部署。您可以使用以下命令使用第一个标签:
kubectl get deployment -l app=nginx
Run Code Online (Sandbox Code Playgroud)
第二个标签:
它不是标签。标签选择器用于选择带有标签 nginx 的 pod。它由 ReplicaSet 使用。
第三个标签:
它是用于识别 pod 的 pod 标签。ReplicaSet 使用它来维护所需的副本数量,并使用该标签选择器。它也用于使用以下命令选择 pod:
kubectl get pods -l app=nginx
Run Code Online (Sandbox Code Playgroud)
第一个标签用于部署,它为该特定部署提供标签.假设您要删除该部署,然后运行以下命令:
kubectl delete deployment -l app=nginx
Run Code Online (Sandbox Code Playgroud)
这将删除整个部署.
所述第二标签是selector: matchLabels
它告诉资源(服务等)根据标签相匹配的吊舱.因此,如果您要创建包含所有标签的pod的服务,app=nginx
请提供以下定义:
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: nginx
Run Code Online (Sandbox Code Playgroud)
上述服务将查找matchLabels并绑定已app: nginx
分配标签的pod
在第三个标签是podTemplate
标签时,template
实际上是podTemplate
.它描述了它发布的pod.因此,假设您有两个副本部署,k8s将启动2个具有指定标签的pod template: metadata: labels
.这是微妙但重要的区别,因此您可以为部署生成部署和pod的不同标签.
归档时间: |
|
查看次数: |
102 次 |
最近记录: |