尝试创建裸机k8s集群以提供某些服务,并且需要能够在tcp端口80和udp端口69上提供这些服务(可从k8s集群外部访问)。我已经使用kubeadm设置了集群,它正在运行ubuntu 16.04。我一直在尝试使用负载均衡器和入口,但没有成功,因为我没有使用外部负载均衡器(本地负载均衡器而不是AWS负载均衡器等)。
我正在尝试做的一个例子是发现here,但它使用的是GCE。
谢谢
发布于 2017-11-02 06:48:42
使用NodePort的服务
创建一个类型为NodePort的服务,服务可以在每个节点上侦听TCP/UDP端口30000-32767。默认情况下,您不能简单地选择在节点上的端口80上公开服务。
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: {SERVICE_PORT}
targetPort: {POD_PORT}
nodePort: 31000
- portocol: UDP
port: {SERVICE_PORT}
targetPort: {POD_PORT}
nodePort: 32000
type: NodePort容器镜像gcr.io/google_containers/proxy-to-service:v2是一个非常小的容器,它将为您进行端口转发。您可以使用它将pod端口或主机端口转发到服务。Pod可以选择任何端口或主机端口,并且不受与服务相同的限制。
apiVersion: v1
kind: Pod
metadata:
name: dns-proxy
spec:
containers:
- name: proxy-udp
image: gcr.io/google_containers/proxy-to-service:v2
args: [ "udp", "53", "kube-dns.default", "1" ]
ports:
- name: udp
protocol: UDP
containerPort: 53
hostPort: 53
- name: proxy-tcp
image: gcr.io/google_containers/proxy-to-service:v2
args: [ "tcp", "53", "kube-dns.default" ]
ports:
- name: tcp
protocol: TCP
containerPort: 53
hostPort: 53入口
如果有多个服务共享不同主机/路径的同一TCP端口,则部署NGINX Ingress Controller,它监听HTTP80和HTTPS443。
创建入口,将流量转发到指定服务。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /testpath
backend:
serviceName: test
servicePort: 80发布于 2018-09-15 08:47:45
如果我要在我的家庭网络上这样做,我会这样做:
在我的路由器上配置2端口转发规则,将流量重定向到充当L4负载均衡器的nginx盒。
因此,如果我的路由器IP是1.2.3.4,而我的自定义L4 nginx LB是192.168.1.200
然后我会告诉我的路由器转发端口:
1.2.3.4:80 --> 192.168.1.200:80
1.2.3.4:443 --> 192.168.1.200:443
我会关注这个https://kubernetes.github.io/ingress-nginx/deploy/
并部署通用云入口控制器中的大部分内容(这应该在集群中创建入口控制器pod、L7 Nginx LB部署和服务,并在节点端口上公开它,以便您拥有NodePort 32080和32443 (请注意,它们实际上是随机的,但更容易遵循))
(因为您使用的是裸机,所以我不相信它能够自动为您生成和配置L4负载均衡器。)
然后,我手动配置L4负载均衡器,以对传入的流量进行负载均衡
端口80 -> NodePort 32080
端口443 -> NodePort 32443
因此,在所做工作的总体情况和下面的链接之间,你应该是好的。
https://kubernetes.github.io/ingress-nginx/deploy/baremetal/
(顺便说一句,这将允许您继续使用入口控制器配置入口)
注意:我计划在几个月后在家里的衣柜里设置一个裸机集群,所以请让我知道它的进展!
发布于 2018-09-15 09:14:50
如果只有一个节点,则将入口控制器部署为主机端口为80的守护进程。不要为其部署服务
如果您有多个节点;对于云提供商,负载均衡器是集群外部的一个构造,它基本上是每个节点的HA代理,每个节点在某些端口上运行您的服务的pod。你可以手动做这类事情,对于任何你想用允许范围内的某个端口(在30k内的某个地方)向NodePort公开设置类型的服务,并启动另一个带有TCP均衡器的虚拟机(比如nginx)到该端口上的所有节点。您将被限制运行与该服务的节点数量一样多的pod
https://stackoverflow.com/questions/47057176
复制相似问题