在有关NodePort的文档中,您可以发现该类型可以分配范围为 30000-32767 的端口。但是,有一种解决方法。如果您将添加一个--service-node-port-range
具有请求范围的特殊标志,准入控制器允许您使用端口 80 和 443 创建 NodePort。
你需要去/etc/kubernetes/manifests/
,用 sudo 编辑kube-apiserver.yaml
并添加条目
- --service-node-port-range=1-32767
。之后,您需要保存它。
现在您需要创建service
. 为此,您需要编辑此 yaml并在端口中node port
添加spec.ports
前:
ports:
- name: http
port: 80
targetPort: 80
protocol: TCP
- name: https
port: 443
targetPort: 443
protocol: TCP
后:
ports:
- name: http
nodePort: 80
port: 80
protocol: TCP
targetPort: 80
- name: https
nodePort: 443
port: 443
protocol: TCP
targetPort: 443
在这些更改之后,您可以kube-apiserver.yaml
在/etc/kubernetes/manifests/中再次进行编辑,并#
在与- --service-node-port-range
.
然后你就可以curl这个NodePort
地址和Node
地址了。
编辑:
澄清后
Ingress 可以通过两种方式部署。第一个是部署Nginx
为需要内部配置文件的Deamonset 。hostPort
但是还有另一种选择,您可以部署Nginx
为Deployment
.
NodeIP 和已知端口:DaemonSet 中的 Pod 可以使用 hostPort,以便通过节点 IP 访问 Pod。客户端以某种方式知道节点 IP 列表,并且按照惯例知道端口。
但是在页面底部,您可以找到:
DaemonSet 与 Deployment 类似,它们都创建 Pod,并且这些 Pod 具有预期不会终止的进程(例如 Web 服务器、存储服务器)。
将 Deployment 用于无状态服务,例如前端,其中扩展和缩减副本数量和推出更新比准确控制 Pod 运行在哪个主机上更重要。当一个 Pod 的副本总是在所有或某些主机上运行很重要,并且当它需要在其他 Pod 之前启动时,使用 DaemonSet。
您需要部署Ingress
为Deployment
而不是部署为Deamonset
.
Nginx 部署示例可以在这里找到。由于部署不需要hostPort
您将能够在没有此参数的情况下创建 pod。