Copyright © 2022-2025 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.4·
页面加载耗时 0.00 毫秒·物理内存 64.1MB ·虚拟内存 1300.8MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
Kubernetes 的node节点,在本机上可以访问 web 的某个端口,但是从外网却无法访问。
通常是由于selinux问题 和 iptables 问题。
解决方式如下:
# 查看 selinux, 如果显示 Enforcing,表示开启getenforce# 关闭 selinuxsetenforce 0# 清除 iptablesiptables --flush iptables -tnat --flush# 接受所有来路iptables -P FORWARD ACCEPT# 重启 docker,k8s 会重新调度 service docker restart
SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux 安全子系统。NSA 是在 Linux 社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在它的任务中所需要文件。
SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 。
通过 setenforce 0 关闭 SELinux ,这样容器才可以访问主机的文件系统,例如 pod 的网络操作就需要访问主机文件系统,直到kubelet 支持 SELinux 之前都需要关闭 SELinux。
iptables --flush 和 iptables -tnat --flush是清空 iptables 的规则,然后重启 docker 后会重新加入 kubernetes 的 iptables 规则,iptables -P FORWARD ACCEPT 则允许转发。
使用 Kubernetes 创建完 pod 之后,查看 pods 状态,发现都处于 containercreationg 状态中。kubectl get pods ...