我的K8服务在不明确公开端口的情况下如何访问?

发布于 2025-01-28 02:21:03 字数 1740 浏览 3 评论 0原文

我正在运行K8S中的HTTP服务器,可以通过呼叫https://e2e-test-runner.hogwarts.svc.cluster.local 但是,我没有明确配置的服务端口。这是如何运作的?

当没有服务端口时,K8S将容器端口作为服务端口?

这是我的服务定义:

apiVersion: v1
kind: Service
metadata:
  name: e2e-test-runner
  namespace: hogwarts
spec:
  selector:
    app: e2e-test-runner

这是我的部署定义:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: e2e-test-runner
  namespace: hogwarts 
spec:
  strategy:
    rollingUpdate:
      maxSurge: 3
      maxUnavailable: 0
  revisionHistoryLimit: 3
  selector:
    matchLabels:
      app: e2e-test-runner
  template:
    metadata:
      labels:
        app: e2e-test-runner
        app.kubernetes.io/name: e2e-test-runner
    spec:
      containers:
        - name: app
          image: $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/e2e-test-runner:$IMAGE_VERSION
          ports:
            - containerPort: 3000
          resources:
            requests:
              memory: "250Mi"
              cpu: "100m"
            limits:
              memory: "1Gi"
              cpu: "1000m"
          livenessProbe:
            httpGet:
              path: /health_check
              port: 3000
              scheme: "HTTPS"
            initialDelaySeconds: 20
            periodSeconds: 10
            timeoutSeconds: 2
          readinessProbe:
            httpGet:
              path: /health_check
              port: 3000
              scheme: "HTTPS"
            initialDelaySeconds: 10
            periodSeconds: 10
            timeoutSeconds: 5
      # Gives pod 15 seconds to complete any outstanding requests before being force killed
      terminationGracePeriodSeconds: 15

I am running a http server in k8s, I am able to access the server via it's svc name from another service by making a call to https://e2e-test-runner.hogwarts.svc.cluster.local However, I haven't explicitly configured service port. How does this work?

Does k8s map container port as service port when no service port is present?

This is my service definition:

apiVersion: v1
kind: Service
metadata:
  name: e2e-test-runner
  namespace: hogwarts
spec:
  selector:
    app: e2e-test-runner

This is my deployment definition:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: e2e-test-runner
  namespace: hogwarts 
spec:
  strategy:
    rollingUpdate:
      maxSurge: 3
      maxUnavailable: 0
  revisionHistoryLimit: 3
  selector:
    matchLabels:
      app: e2e-test-runner
  template:
    metadata:
      labels:
        app: e2e-test-runner
        app.kubernetes.io/name: e2e-test-runner
    spec:
      containers:
        - name: app
          image: $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/e2e-test-runner:$IMAGE_VERSION
          ports:
            - containerPort: 3000
          resources:
            requests:
              memory: "250Mi"
              cpu: "100m"
            limits:
              memory: "1Gi"
              cpu: "1000m"
          livenessProbe:
            httpGet:
              path: /health_check
              port: 3000
              scheme: "HTTPS"
            initialDelaySeconds: 20
            periodSeconds: 10
            timeoutSeconds: 2
          readinessProbe:
            httpGet:
              path: /health_check
              port: 3000
              scheme: "HTTPS"
            initialDelaySeconds: 10
            periodSeconds: 10
            timeoutSeconds: 5
      # Gives pod 15 seconds to complete any outstanding requests before being force killed
      terminationGracePeriodSeconds: 15

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文