我想将所有节点上的服务绑定到端口 80 和 443,这样我将通过 DNS 名称(kubernetes)重定向到通过 HTTP/S 将我直接重定向到服务的任何节点,然后再到部署(nginx )。但是,我不知道这是如何工作的,因为 NodePorts 的范围仅从 30000 到 32xxx。
这是我的设置
DNS-Name IPv4
k8s-master 172.25.35.47
k8s-node-01 172.25.36.47
k8s-node-02 172.25.36.8
kubernetes 172.25.36.47
kubernetes 172.25.36.8
我的 yaml 文件
apiVersion: v1
kind: Service
metadata:
name: proxy
spec:
ports:
- name: http
nodePort: 80
port: 80
protocol: TCP
targetPort: 80
- name: https
nodePort: 443
port: 443
protocol: TCP
targetPort: 443
selector:
name: proxy
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: proxy
labels:
name: proxy
spec:
selector:
matchLabels:
name: proxy
replicas: 1
template:
metadata:
labels:
name: proxy
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- name: http
containerPort: 80
protocol: TCP
- name: https
containerPort: 443
protocol: TCP
哪种类型的服务为我提供了公开此端口的功能,或者我如何实现我的心理设置?
沃尔克
你有两个选择:
简单的端口转发
在所有服务器上运行以下命令
替换
<nodeport>
为您为 nodeport 选择的端口。这需要您在所有机器上运行命令,并且有点 hacks。更好的解决方案是:外部IP
链接到文档
这允许您绑定特定节点上的任何端口,然后将其路由通过集群。显然,这确实提供了单点故障,可以通过以下方式修复:
保活
keepalived 是一个非常简单的软件。它创建了一个虚拟 IP 地址,当主节点发生故障时,该地址将被移动以指向不同的节点。它有效地为主 keepalived 服务器创建别名 IP 地址。keepalived-vip是一个好的开始,它会自动为您提供的服务设置 keepalived。
结论
我个人为此使用 keepalived-vip,因为它更适合我的网络模型,但是如果您的客户端可以访问您的任何服务器,那么简单的端口转发是唯一的方法。