gpt4 book ai didi

kubernetes - 如何在裸机安装上从外部访问 kubernetes 服务

转载 作者:行者123 更新时间:2023-12-04 01:37:47 24 4
gpt4 key购买 nike

试图制作一个裸机 k8s 集群来提供一些服务,并且需要能够在 tcp 端口 80 和 udp 端口​​ 69(可从 k8s 集群外部访问)上提供它们。我已经使用 kubeadm 设置了集群并且它正在运行 ubuntu 16.04。如何从外部访问服务?我一直在尝试使用负载平衡器和入口,但没有运气,因为我没有使用外部负载平衡器(本地而不是 AWS 等)

我正在尝试做的一个例子可以找到 here但它使用的是 GCE。

谢谢

最佳答案

使用 NodePort 服务

创建类型为 NodePort 的服务, Service 可以监听每个节点上的 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 可以选择任何端口或主机端口,并且不受 Service 的限制。
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 ,它监听 HTTP 80 和 HTTPS 443。

创建一个入口,将流量转发到指定的服务。
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

关于kubernetes - 如何在裸机安装上从外部访问 kubernetes 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47057176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com