gpt4 book ai didi

kubernetes - 在 Kubernetes 中,如何在服务选择器中按名称选择 pod?

转载 作者:行者123 更新时间:2023-12-02 11:39:04 27 4
gpt4 key购买 nike

我希望启动特定数量的独立且未负载平衡的 Pod。 (目的是使用这些来发送和接收来自某个外部端点的某些流量。)我计划这样做的方法是显式创建 pod(yaml 片段如下)

    apiVersion: v1
kind: Pod
metadata:
name: generator-agent-pod-1
labels:
app: generator-agent
version: v1
spec:
containers:
...

(在这种情况下,名称将自动生成为 generator-agent-pod-1, generator-agent-pod-2 等)

然后我希望为每个 pod 创建一个服务:所以基本上,会有一个 generator-agent-service-1, generator-agent-service-2等,然后我就可以使用该服务从外部访问 pod。

我现在有两个问题:
1.在服务中,如何通过名称(而不是标签)选择特定的pod?相当于:
apiVersion: v1
kind: Service
metadata:
name: generator-agent-service-1
labels:
app: agent-service
spec:
type: NodePort
ports:
- port: 8085
protocol: TCP
selector:
metadata.name: generator-agent-pod-1

(这个服务没有得到任何端点,所以我想选择器是不正确的。)
  • 有没有更好的方法来解决这个问题(Kubernetes 或其他)?

  • 谢谢!

    最佳答案

    您还可以选择定义一个没有 pod 选择器的服务。
    然后通过手动添加 Endpoint 对象,手动将 Service 映射到它运行的网络地址和端口。

    供您引用的示例:

    创建了两个 nginx 类型的 Pod

    $ kubectl get all -o wide
    NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    pod/nginx-one 1/1 Running 0 4m56s 192.168.58.199 k8s-node02 <none> <none>
    pod/nginx-two 1/1 Running 0 4m50s 192.168.85.193 k8s-node01 <none> <none>

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
    service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 29m <none>

    使用下面的 yaml 创建两个服务,注意下面的 yaml 上没有使用 Pod 选择器字段

    服务1.yaml
    apiVersion: v1
    kind: Service
    metadata:
    name: nginx-one-service
    spec:
    ports:
    - protocol: TCP
    port: 80

    service2.yaml
    apiVersion: v1
    kind: Service
    metadata:
    name: nginx-two-service
    spec:
    ports:
    - protocol: TCP
    port: 80


    $ kubectl get svc
    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 32m
    nginx-one-service ClusterIP 10.102.230.78 <none> 80/TCP 7m16s
    nginx-two-service ClusterIP 10.98.86.67 <none> 80/TCP 6m56s

    描述服务和 由于我们没有给出选择器 ,所以没有映射端点.
    ubuntu@k8s-master:~$ kubectl describe service nginx-one-service
    Name: nginx-one-service
    Namespace: default
    Labels: <none>
    Annotations: <none>
    Selector: <none>
    Type: ClusterIP
    IP: 10.102.230.78
    Port: <unset> 80/TCP
    TargetPort: 80/TCP
    Endpoints: <none>
    Session Affinity: None
    Events: <none>

    ubuntu@k8s-master:~$ kubectl describe service nginx-two-service
    Name: nginx-two-service
    Namespace: default
    Labels: <none>
    Annotations: <none>
    Selector: <none>
    Type: ClusterIP
    IP: 10.98.86.67
    Port: <unset> 80/TCP
    TargetPort: 80/TCP
    Endpoints: <none>
    Session Affinity: None
    Events: <none>

    现在您可以选择使用以下 yamls 手动映射端点。

    端点1.yaml
    apiVersion: v1
    kind: Endpoints
    metadata:
    name: nginx-one-service
    subsets:
    - addresses:
    - ip: 192.168.85.193
    ports:
    - port: 80

    端点2.yaml
    apiVersion: v1
    kind: Endpoints
    metadata:
    name: nginx-two-service
    subsets:
    - addresses:
    - ip: 192.168.85.193
    ports:
    - port: 80

    现在在创建时获取端点
    $ kubectl get endpoints
    NAME ENDPOINTS AGE
    kubernetes 131.160.188.46:6443 35m
    nginx-one-service 192.168.58.199:80 5m30s
    nginx-two-service 192.168.85.193:80 4m59s

    并列出服务和端点应映射如下
    ubuntu@k8s-master:~$ kubectl describe service nginx-one-service
    Name: nginx-one-service
    Namespace: default
    Labels: <none>
    Annotations: <none>
    Selector: <none>
    Type: ClusterIP
    IP: 10.102.230.78
    Port: <unset> 80/TCP
    TargetPort: 80/TCP
    Endpoints: 192.168.58.199:80
    Session Affinity: None
    Events: <none>

    ubuntu@k8s-master:~$ kubectl describe service nginx-two-service
    Name: nginx-two-service
    Namespace: default
    Labels: <none>
    Annotations: <none>
    Selector: <none>
    Type: ClusterIP
    IP: 10.98.86.67
    Port: <unset> 80/TCP
    TargetPort: 80/TCP
    Endpoints: 192.168.85.193:80
    Session Affinity: None
    Events: <none>

    关于kubernetes - 在 Kubernetes 中,如何在服务选择器中按名称选择 pod?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60004244/

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