gpt4 book ai didi

docker - Kubernetes HyperV 集群公开服务

转载 作者:行者123 更新时间:2023-12-04 19:12:12 28 4
gpt4 key购买 nike

TL;博士;

如何从我的主机连接到我的 kubernetes 集群,通过 Hyper-V 连接到 Kubernetes 代理 (kube-proxy)。

所以我有两个 Ubuntu 18.04.1 LTS 服务器的 hyper-v 设置。相同的设置。

一个是大师

OS Image:                   Ubuntu 18.04.1 LTS
Operating System: linux
Architecture: amd64
Container Runtime Version: docker://18.6.0
Kubelet Version: v1.11.1
Kube-Proxy Version: v1.11.1

另一个节点:
OS Image:                   Ubuntu 18.04.1 LTS
Operating System: linux
Architecture: amd64
Container Runtime Version: docker://18.6.0
Kubelet Version: v1.11.1
Kube-Proxy Version: v1.11.1

它默认运行这些 pod:
kube-system   coredns-78fcdf6894-6ld8l               1/1       Running   1          4h
kube-system coredns-78fcdf6894-ncp79 1/1 Running 1 4h
kube-system etcd-node1 1/1 Running 1 4h
kube-system kube-apiserver-node1 1/1 Running 1 4h
kube-system kube-controller-manager-node1 1/1 Running 1 4h
kube-system kube-proxy-942xh 1/1 Running 1 4h
kube-system kube-proxy-k6jl4 1/1 Running 1 4h
kube-system kube-scheduler-node1 1/1 Running 1 4h
kube-system kubernetes-dashboard-6948bdb78-9fbv8 1/1 Running 0 25m
kube-system weave-net-fzj8h 2/2 Running 2 3h
kube-system weave-net-s648g 2/2 Running 3 3h

这两个节点通过两个 IP 地址暴露给我的 LAN:
192.168.1.116
192.168.1.115

我已经公开了我的部署:
service.yml :
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: NodePort # internal cluster management
ports:
- port: 80 # container port
nodePort: 30001 # outside port
protocol: TCP
targetPort: http
selector:
app: my-api
tier: backend

列出来:
$ kubectl get svc -o wide
my-service NodePort 10.105.166.48 <none> 80:30001/TCP 50m app=my-api,tier=backend
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4h <none>

如果我坐在我的主节点上并 curl pod
$ kubectl get pods -o wide
my-api-86db46fc95-2d6wf 1/1 Running 0 22m 10.32.0.7 node2
$ curl 10.32.0.7:80/api/health
{"success": true}

我的 api 显然在 pod 中。

当我查询服务IP时
$ curl 10.105.166.48:80/api/health

或者
$ curl 10.105.166.48:30001/api/health

它只是超时

我的主网络配置:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 192.168.1.116 netmask 255.255.255.0 broadcast 192.168.1.255

weave: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1376
inet 10.40.0.0 netmask 255.240.0.0 broadcast 10.47.255.255

docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255

我的 iptables 只是将所有内容列为 source anywhere destination anywhere大量引用 KUBE 和 DOCKER。

我什至尝试设置 dashboard无济于事...

访问网址:
https://192.168.1.116:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

nslookup没有显示主机名:
$ nslookup my-service
Server: 127.0.0.53
Address: 127.0.0.53#53

** server can't find eyemenu-api-service: SERVFAIL

最佳答案

要访问节点端口 30001,您需要使用节点的 ip。

curl nodeip:30001/api/health

集群内的 Pod 不知道节点端口 30001。

nodePort 会将端口暴露给 Kubernetes 集群的所有工作节点,因此您可以使用以下任一方式:

curl node1:30001/api/health 或
curl 节点2:30001/api/health

关于docker - Kubernetes HyperV 集群公开服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51575267/

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