前言:我知道这有点重复(这个问题在这里已经问了很多次了,不同版本),但我真的找不到一个明确的答案,这是如何处理裸金属。
问题:我希望能够访问内部服务,而不需要为每个服务进行转发。比如访问loki或traefik仪表板。安装程序正在裸金属服务器上运行标准K3S。大多数答案和指南都集中在基于云的负载平衡器上,但是很明显,这个选项对我来说是不可用的。
解决这个问题似乎有很多种方法,但最简单的方法是什么呢?绑定到VPN接口的第二个入口控制器?负载平衡器(哪一个?)
我真的很感激你的指导!
发布于 2022-06-09 02:35:39
在主机上公开k3s
服务的最简单方法就是创建一个LoadBalancer
服务。您实际上不需要安装任何类型的负载均衡器;这将在主机上公开您的服务端口。
例如,启动一个吊舱:
k3s kubectl run --image docker.io/alpinelinux/darkhttpd:latest --port 8080 webtest
创建一个服务:
k3s kubectl expose pod webtest --target-port 8080 --name webtest --type=LoadBalancer
这样我们就有了一份清单,看起来像是:
apiVersion: v1
kind: Service
metadata:
labels:
run: webtest
name: webtest
namespace: default
spec:
allocateLoadBalancerNodePorts: true
clusterIP: 10.43.234.34
clusterIPs:
- 10.43.234.34
externalTrafficPolicy: Cluster
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- nodePort: 31647
port: 8080
protocol: TCP
targetPort: 8080
selector:
run: webtest
sessionAffinity: None
type: LoadBalancer
status:
loadBalancer:
ingress:
- ip: 192.168.122.136
现在在我的k3s
主机上,我可以:
$ curl localhost:8080
<html>
<head>
<title>/</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
...
或者从我网络上的其他地方:
$ curl 192.168.1212.136:8080
<html>
<head>
<title>/</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
...
发布于 2022-06-20 09:20:01
最后,问题在于如何将来自我的有线接口的流量路由到k3s。在修复了路线之后,我就可以访问公开的服务了。
https://stackoverflow.com/questions/72541143
复制相似问题