gpt4 book ai didi

kubernetes - kubectl expose deployment 和 create service 有什么区别?

转载 作者:行者123 更新时间:2023-12-05 03:26:53 63 4
gpt4 key购买 nike

有什么区别

kubectl expose deployment myservice --type=NodePort --port=80 --target-port=80

kubectl create service nodeport myservice --tcp=80:80

?

最佳答案

kubectl create service nodeport myservice --tcp=80:80

它只是创建服务名称作为标签/选择器。

kubectl expose deployment myservice --type=NodePort --port=80 --target-port=80

它根据 deployment 中指定的 labels/selector 创建服务。因此,使用它,您可以通过单个 Nodeport 公开特定部署的所有 POD。

解释:

两者主要在标签选择器方面有所不同。

kubectl create service nodeport myservice --tcp=80:80

如果您将运行上面的命令,它将创建带有选择器 myservice 的服务。

示例:

apiVersion: v1
kind: Service
metadata:
labels:
app: myservice
name: myservice
spec:
ports:
- name: 80-80
nodePort: 30858
port: 80
protocol: TCP
targetPort: 80
selector:
app: myservice
type: NodePort

如您所见,选择器:myservicelabels & servicename 中的相同集合。因此,服务名称 用作标签选择器。您的服务已在此处创建,但无法与部署对话,因为选择器不同(除非您使用来自部署的匹配选择器的名称创建服务)。

同时使用命令:

kubectl expose deployment nginx-deployment --type=NodePort --port=80 --target-port=80

它将使用部署的标签和选择器。这意味着如果您部署了 Nginx 运行并且它有 selector : nginx 它将在您公开该部署时从那里获取它。

示例部署:

apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: nginx
spec:
containers:
- image: nginx:1.14.2
imagePullPolicy: IfNotPresent
name: nginx
ports:
- containerPort: 80
protocol: TCP

现在,如果你将运行如下命令

kubectl expose deployment nginx-deployment --type=NodePort --port=80 --target-port=80

服务将在部署中使用selector: nginx

示例服务:

apiVersion: v1
kind: Service
metadata:
labels:
app: nginx
name: nginx-deployment
spec:
ports:
- name: 80-80
nodePort: 30858
port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: NodePort

关于kubernetes - kubectl expose deployment 和 create service 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71610709/

63 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com