如何在 docker-compose 等 kubernetes 中进行端口转发

Svi*_*afr 1 docker kubernetes

我有 docker-compose.yml

version: '3.5'
services:
  container-name:
    image: container-image
    ports:
      - 80:80
      - 443:443
Run Code Online (Sandbox Code Playgroud)

它创建了一个容器,端口转发到主机。码头工人检查容器名称

[...]
NetworkSettings: {
  [...]
  Ports: {
    443/tcp: [{ HostIp: 0.0.0.0, HostPort: 443 }]
    80/tcp: [{ HostIp: 0.0.0.0, HostPort: 80 }]
  }
  [...]
}
[...]
Run Code Online (Sandbox Code Playgroud)

但是在 kubernetes next pod.yml 中,创建没有端口的容器。

kind: Pod
matadata:
  name: pod-name
spec:
  containers:
  - image: container-image
    name: container-name
    ports:
    - containerPort: 80
      protocol: TCP
    - containerPort: 443
      protocol: TCP
    [...]
Run Code Online (Sandbox Code Playgroud)

简而言之,我需要将容器(pod)端口转发到主机(节点)。

我发现最好暴露。但这对我不起作用。

gon*_*aul 6

kubernetes 更喜欢的方式是通过服务公开您的 pod 并通过部署来控制它。

如果您出于某种原因想要使用端口转发,您可以这样做:

kubectl port-forward pod/pod-name 8080:80 8443:443 -n default
Run Code Online (Sandbox Code Playgroud)

这将在您的主机端口绑定80808443,转发流量的端口80,并443分别带有名称吊舱pod-name。我没有省略命名空间 ( default),默认情况下kubectl将使用您的当前上下文

  • 应该注意的是,`kubectl port-forward ...` 是为了调试目的,在超时后停止工作。更多关于这个 [answer](/sf/answers/3603347541/) 来自 [@David Maze](/sf/users/700572141/)。 (3认同)