具有内部(clusterip)和外部(nodeport)配置的kubernetes多端口



我正在使用nginx,并利用状态存根模块,只暴露给内部网络(我没有使用允许模块,而是使用listen绑定到127.0.0.1)。

我想将nginx作为kubernetes的服务部署,并使用不同的kubernetes服务类型公开nginx.conf中定义的两个nginx服务器(见下文)。这样,状态服务器端点只能在kubernetes集群内部可用(CluserIP),而另一个服务器端点可以在kubernetes集群外部可用(NodePort)。

我明白,nginx.conf上的状态服务器也可以监听localhost,并且kubernetes服务配置可以配置为仅从kubernetes集群内传递流量到状态服务器。

虽然我尝试了,但我无法使用适当的kubernetes服务配置来实现这一点,希望得到一些帮助。

这里是nginx配置(nginx.conf)

events {
worker_connections 4000;
use epoll;
epoll_events 512;
multi_accept on;
accept_mutex on;
}
http {
server {
listen 80 default_server;
root /usr/share/nginx/html;
location / {
return 200 'success';
}
}
server {
listen 127.0.0.1:8080;
server_name _;
location / {
stub_status;
}
}
}

容器规范应该列出两个端口,并且应该有两个独立的服务,它们都具有相同的选择器,但具有不同的类型,并且针对pod中的不同端口。

并且诅咒,将绑定地址从127.0.0.1更改为localhost(通过完全删除绑定地址)

---
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
selector:
app: nginx
type: NodePort
ports:
- name: http
port: 8888
targetPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-status-svc
spec:
selector:
app: nginx
type: ClusterIP
ports:
- name: http
port: 9999
targetPort: 8080

相关内容

  • 没有找到相关文章

最新更新