如何在docker-compose之类的kubernetes中进行端口转发

时间:2018-12-04 12:46:37

标签: docker kubernetes

我有docker-compose.yml

version: '3.5'
services:
  container-name:
    image: container-image
    ports:
      - 80:80
      - 443:443

它创建带有端口转发到主机的容器。 码头工人检查容器名称

[...]
NetworkSettings: {
  [...]
  Ports: {
    443/tcp: [{ HostIp: 0.0.0.0, HostPort: 443 }]
    80/tcp: [{ HostIp: 0.0.0.0, HostPort: 80 }]
  }
  [...]
}
[...]

但是在kubernetes的下一个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
    [...]

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

我发现更好地进行曝光。但这对我不起作用。

2 个答案:

答案 0 :(得分:3)

更喜欢使用kubernetes的方式是通过service暴露您的pod,并用deployment对其进行控制。

如果出于某些原因要使用端口转发,请按以下步骤操作:

kubectl port-forward pod/pod-name 8080:80 8443:443 -n default

这将绑定到您的主机端口80808443上,分别将流量转发到名称为{{的Pod的端口80443 1}}。我没有省略命名空间(pod-name),默认情况下default将使用您的current-context

答案 1 :(得分:0)

如果您知道应用程序正在使用的端口,则可以使用:

kubectl端口转发LOCAL_PORT:REMOTE_PORT

类似: kubectl端口转发8080:80

这假定您的Pod在默认名称空间中。如果您部署在另一个名称空间中,则可以在kubectl命令中使用-n参数。