You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无端口长期运行服务的Kubernetes Deployment声明式YAML配置咨询

Alright, let's put together the Kubernetes Deployment YAML for your long-running Pub/Sub processing service. Since your service runs on a while 1 loop and doesn't need to listen on any ports, we can keep the config clean and focused on keeping your worker pods running reliably.

Core Deployment YAML

Here's a complete, declarative Deployment configuration tailored to your use case:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: pubsub-processor-deployment
  labels:
    app: pubsub-processor
spec:
  replicas: 3 # Adjust this to match how many concurrent workers you need
  selector:
    matchLabels:
      app: pubsub-processor
  template:
    metadata:
      labels:
        app: pubsub-processor
    spec:
      containers:
      - name: pubsub-processor-container
        image: your-docker-image:tag # Replace with your actual image URL
        resources:
          requests:
            cpu: "100m" # Minimum CPU allocation for the pod
            memory: "256Mi" # Minimum memory allocation for the pod
          limits:
            cpu: "500m" # Max CPU the pod can consume
            memory: "512Mi" # Max memory the pod can consume
        # No ports needed here—your service doesn't listen on any!
        env:
        # Add environment variables for your service (GCP auth, DB credentials, etc.)
        - name: GOOGLE_APPLICATION_CREDENTIALS
          value: /secrets/gcp-sa.json
        - name: DB_CONN_STRING
          valueFrom:
            secretKeyRef:
              name: db-credentials-secret
              key: connection-string
        volumeMounts:
        - name: gcp-service-account
          mountPath: /secrets
          readOnly: true
      volumes:
      - name: gcp-service-account
        secret:
          secretName: gcp-sa-secret # Replace with your secret holding GCP credentials

Key Details to Note

  • No port configuration: Since your service doesn't expose any ports, we can completely omit the ports field in the container spec. Kubernetes doesn't require this unless you're planning to route external traffic to the pod via a Service.
  • Replica count: Set replicas to the number of parallel worker instances you want running. This helps scale your Pub/Sub processing capacity to handle higher loads.
  • Resource limits/requests: Defining these ensures your pods get the resources they need to run smoothly, and prevents them from consuming excessive cluster capacity that could starve other workloads. Adjust these values based on your service's actual resource usage.
  • Secrets for sensitive data: We're using Kubernetes Secrets to store sensitive values like GCP service account keys and database connection strings. This avoids hardcoding sensitive info in your image or YAML, which is a critical security best practice.

About Headless Services (If You Need One)

You mentioned headless services—if you need one for pod DNS resolution or internal communication needs (even though your service doesn't listen on ports), here's a quick example:

apiVersion: v1
kind: Service
metadata:
  name: pubsub-processor-headless
spec:
  clusterIP: None # This marks it as a headless service
  selector:
    app: pubsub-processor
  # Optional: Some tools expect a port definition, even if unused
  ports:
  - name: dummy-port
    port: 8080
    targetPort: 8080

Headless services don't allocate a cluster IP—instead, they return DNS records for each matching pod. This is useful if you need direct pod-to-pod communication, but it's not required for your basic long-running worker.

A Quick Note on the Job Alternative

You're absolutely right that using a Job (or CronJob for recurring workloads) is a better practice if your worker can exit after processing its load. Jobs are purpose-built for batch workloads where pods terminate once their task is completed. Since that's on your todo list, the Deployment above is a solid interim solution for your infinite-loop service.

内容的提问来源于stack exchange,提问作者opyate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:30:56