Azure Kubernetes - 单节点,两个副本:端口问题?
Azure Kubernetes - single node, two replicas: port issue?
我目前正在 Azure Kubernetes 中为生产环境创建一个 Kubernetes 集群。在我的集群中,节点池中只有一个节点 - pool1。
现在,我想部署一个具有 2 个副本的应用程序,如下所示
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment-1
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.16.1
应用程序将监听哪个端口?两个pods会部署在同一个节点上,端口怎么分配?
更新: 按照建议,已使用服务定义更新清单。
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.16.1
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: web
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetport: 80
type: LoadBalancer
其实AKS会为两个副本使用节点的两个不同端口,但是你还需要将容器的80端口对外暴露,因为Nginx监听的是80端口。通常AKS使用的是将请求路由到所有 pods 之外的服务,该服务的工作方式类似于负载平衡。
所以你只需要专注于暴露镜像监听的端口和你想对外暴露的服务的端口即可。
我目前正在 Azure Kubernetes 中为生产环境创建一个 Kubernetes 集群。在我的集群中,节点池中只有一个节点 - pool1。
现在,我想部署一个具有 2 个副本的应用程序,如下所示
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment-1
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.16.1
应用程序将监听哪个端口?两个pods会部署在同一个节点上,端口怎么分配?
更新: 按照建议,已使用服务定义更新清单。
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.16.1
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: web
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetport: 80
type: LoadBalancer
其实AKS会为两个副本使用节点的两个不同端口,但是你还需要将容器的80端口对外暴露,因为Nginx监听的是80端口。通常AKS使用的是将请求路由到所有 pods 之外的服务,该服务的工作方式类似于负载平衡。
所以你只需要专注于暴露镜像监听的端口和你想对外暴露的服务的端口即可。