AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1024172
Accepted
Lisek
Lisek
Asked: 2020-07-07 02:22:42 +0800 CST2020-07-07 02:22:42 +0800 CST 2020-07-07 02:22:42 +0800 CST

Kubernetes:如何强制 kube-proxy 仅在 localhost 上侦听

  • 772

在我的配置中,非常基本的一个(只有 calico 网络,还没有应用程序)我有 nginx-ingress 作为 NodePort 运行 - 绑定在端口 30080 上。这个端口应该只能从 localhost 访问,但是 k8s 为每个人打开了这个端口,因为它是在 0.0.0.0 上绑定它现在已经完全开放。

所以我想强制 kube-proxy 仅将此端口绑定到 127.0.0.1。

我尝试将 configmap 修改为 nginx-ingress (bind-address) 但没有运气。

由于此端口连接到 kube-proxy - 我一直在寻找 kube-proxy 配置,但一点运气都没有。我在 /var/lib/kube-proxy 中找到了 yaml 配置文件,但修改它并没有改变这一点。

重新启动 pod 后,它们仍然绑定到 0.0.0.0

我从互联网上尝试了很多方法,但仍然没有运气。

集群初始化为:kubeadm init --pod-network-cidr=10.XXX.XXX.XXX/XX --apiserver-advertise-address=XXXX

ubuntu kubernetes nginx-ingress
  • 1 1 个回答
  • 3193 Views

1 个回答

  • Voted
  1. Best Answer
    PjoterS
    2020-07-08T04:04:53+08:002020-07-08T04:04:53+08:00

    不确定这是否是您一直在寻找的,但是通过这种方式,它会继续收听127.0.0.1:NodePort

    您需要更改kube-proxy configmap但不需要bindAddress:(它应该保持原样bindAddress: 0.0.0.0)并且默认值nodePortAddresses: null应该更改为nodePortAddresses: ["127.0.0.0/8"]. 就["127.0.0.0/8"]好像你会改变只是为了127.0.0.1/8 kube-proxy豆荚会粉碎。

    使用更改nodePortAddresses: null并nodePortAddresses: ["127.0.0.0/8"]保存:wq。默认情况下edit将在VI文本编辑器中打开。

    $ kubectl edit cm kube-proxy -n kube-system
    configmap/kube-proxy edited
    

    如果你想使用 nano 作为文本编辑器,你必须使用KUBE_EDITOR="nano" kubectl edit cm kube-proxy -n kube-system.

    作为我Nginx deployment从这个文档中使用的例子。只有 chage 被添加type: NodePort到服务 YAML。

    现在您需要将此新配置应用于 kube-proxy。最简单的方法是删除kube-proxypod,因为daemonset.apps/kube-proxy将使用新配置创建新的。

    原始输出:

    $ kubectl get svc
    NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
    kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        19m
    my-nginx     NodePort    10.109.237.94   <none>        80:31672/TCP   24s
    $ netstat -plnt
    (Not all processes could be identified, non-owned process info
     will not be shown, you would have to be root to see it all.)
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 0.0.0.0:31672           0.0.0.0:*               LISTEN      -                   
    tcp        0      0 127.0.0.1:10248         0.0.0.0:*               LISTEN      -                   
    tcp        0      0 127.0.0.1:10249         0.0.0.0:*               LISTEN      -                   
    ...                
    

    更改后的输出nodePortAddresses:

    $ kubectl get svc
    NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
    kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP        33m
    my-nginx     NodePort    10.96.27.244   <none>        80:30679/TCP   2m40s
    $ netstat -plnt
    (Not all processes could be identified, non-owned process info
     will not be shown, you would have to be root to see it all.)
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 127.0.0.1:30679         0.0.0.0:*               LISTEN      -                   
    tcp        0      0 127.0.0.1:10248         0.0.0.0:*               LISTEN      -                   
    tcp        0      0 127.0.0.1:10249         0.0.0.0:*               LISTEN      -                   
    ...                  
    
    • 2

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

  • VirtualBox 上 Ubuntu 的访客优化技巧 [关闭]

  • 外部硬盘上的 virtualbox 虚拟硬盘驱动器(Vista 主机上的 ubuntu 客户机)

  • 如何在 Ubuntu 上挂载 LVM 分区?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve