Flannel: HostPort sem mapeamento

Criado em 26 jan. 2018  ·  7Comentários  ·  Fonte: coreos/flannel

Estou tentando fazer o HostPorts funcionar, mas eles simplesmente não parecem funcionar. Eu os configurei em minha configuração de implantação no contêiner e eles não são mapeados. Eu vasculhei a rede por toda a parte, mas não parece haver uma maneira concreta de configurar as coisas. Eu olhei para a solicitação de mesclagem mencionada acima (kubernetes / website # 5940) e ela menciona a documentação do

Em termos de configuração, o mais próximo que posso encontrar é o comentário desse sujeito e minha configuração parece corresponder à dele, mas mesmo agora não está claro como fazer a configuração entrar em vigor.

Alguém conhece alguma documentação que descreva as partes móveis da configuração de uma porta de host e como configurá-la, e algum arquivo / comando de configuração de exemplo seria útil?

Comportamento esperado

hostport configurações mapeiam uma porta de host.

Comportamento Atual

Não abre uma porta de host

Etapas para reproduzir (para bugs)


  1. Configure uma implantação de contêiner com uma porta de host.

Minha configuração

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "1"
  generation: 1
  labels:
    run: website
  name: websiteHostPortTest
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      run: website
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        run: website
    spec:
      containers:
      - image: <path to container>
        imagePullPolicy: Always
        name: website2
        ports:
        - containerPort: 80
          protocol: TCP
          hostPort: 80
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30

Contexto



Estou tentando hospedar o Ingress na porta 80, mas meu contêiner de teste não consegue abrir uma porta do host, portanto, se não funcionar, o Ingress não funcionará.

Seu Ambiente

  • Versão em flanela: mais recente conforme a data de escrita
  • Backend usado (por exemplo, vxlan ou udp): não tenho certeza de como saber
  • Versão Etcd:
  • Versão do Kubernetes (se usado):
version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.1", GitCommit:"3a1c9449a956b6026f075fa3134ff92f7d55f812", GitTreeState:"clean", BuildDate:"2018-01-04T11:52:23Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}
  • Sistema operacional e versão: Ubuntu Server 16.04 AMD64
  • Link para seu projeto (opcional):

Comentários muito úteis

Eu encontrei um problema semelhante - originalmente implantei a flanela 0.9 que não era compatível com o plugin portmap e, em seguida, removi-a e adicionei a flanela 0.10, que inclui o plugin portmap.
O problema era que 10-flannel.conf de flannel 0.9 permanecia em /etc/cni/net.d
Depois de removê-lo e reiniciar os nós, o HostPort começou a funcionar (no entanto, pode ter sido o suficiente apenas reiniciar o kubelet).
Talvez rm -f deva ser incluído na flanela 0.10 para atualização de outras pessoas

Todos 7 comentários

Eu encontrei um problema semelhante - originalmente implantei a flanela 0.9 que não era compatível com o plugin portmap e, em seguida, removi-a e adicionei a flanela 0.10, que inclui o plugin portmap.
O problema era que 10-flannel.conf de flannel 0.9 permanecia em /etc/cni/net.d
Depois de removê-lo e reiniciar os nós, o HostPort começou a funcionar (no entanto, pode ter sido o suficiente apenas reiniciar o kubelet).
Talvez rm -f deva ser incluído na flanela 0.10 para atualização de outras pessoas

@smorrisfv Você encontrou uma hostPort não criando um mapeamento de porta para o host quando o uso em um Daemonset.

Estou usando https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml para instalar o Flannel, que usa quay.io/coreos/ flannel: v0.10.0-amd64. Eu não deveria estar tendo o problema de ter arquivos de configuração 0,9 antigos sobrando porque esta é uma instalação nova.

@NickMRamirez Eu nunca encontrei uma solução alternativa. Trabalhei nisso por mais ou menos uma semana, depois passei para outras tarefas urgentes e não voltei. É uma das últimas coisas que bloqueiam a implantação do meu k8s. Não seria apenas criar a porta no host, eu deveria olhar para ver qual versão estou executando, mas acho que era 0.1.

teve esse problema ao tentar usar o nginx-ingress local.

Notícia:

Parece que estava faltando:

curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/baremetal/service-nodeport.yaml \
| kubectl apply -f -

Kubespray não tem a opção de implantar service-nodeport para nginx-ingress, então isso deve ser feito manualmente. Agora testei usando chita, mas parece que posso tentar novamente com flanela.

Encontro o mesmo problema k8s 1.11.5 + flannel daemonset pod hostport não mapeado

dois DNAT para o mesmo pod

-UMA DOCKER! -i docker0 -p tcp -m tcp --dport 10101 -j DNAT --para o destino 10.251.90.31:10101

-A KUBE-SEP-SVXEETBGLRGRAETZ -p tcp -m comentário --comentário "cfglyb / cfglyb-c yzhglptqd: port1 " -m tcp -j DNAT --para o destino 10.251.90.31:8080

Pode ser um bug do docker, remover o contêiner do docker e não reciclar a regra DNAT
-UMA DOCKER! -i docker0 -p tcp -m tcp --dport 10101 -j DNAT --para o destino 10.251.90.31:10101

-UMA DOCKER! -i docker0 -p tcp -m tcp --dport 10101 -j DNAT --para o destino 10.251.90.7:10101

Esta página foi útil?
0 / 5 - 0 avaliações