gpt4 book ai didi

kubernetes - 为 DaemonSet 创建服务

转载 作者:行者123 更新时间:2023-12-02 04:31:36 35 4
gpt4 key购买 nike

我正在尝试通过服务访问监听端口 18081 的 DaemonSet,但到目前为止未成功。

由 DaemonSet 启动的 pod 工作正常。我可以将端口转发到 pod 和端口 18081,并与端口上公开的 API 通信。

DaemonSet 的服务配置如下:

kind: Service
apiVersion: v1
metadata:
name: monerod-service
spec:
selector:
name: monerod
ports:
- protocol: TCP
port: 18081

在 Kubernetes UI(kubectl 代理)中,服务中选择了正确的 Pod,因此 Pod 选择器似乎没问题。

我可以在需要连接到 monerod-service 的 pod 上执行 ping 并显示正确的 IP。但是通过 curl 连接到端口失败(相同的 curl 在端口转发测试中有效)。

我在配置中缺少什么。 DaemonSet/Deployment 服务创建之间有区别吗?

更多地使用 Kubernetes

我玩弄了服务和 DaemonSet。我将 DaemonSet 转换为“正常”
部署,但显示相同的行为。因此该行为与 DaemonSets 无关。它必须是我不理解的服务/ pod 的其他东西。

我现在创建了服务:
kubectl expose deployment monerod-deployment --type=ClusterIP

这导致以下服务:
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "monerod-deployment",
"namespace": "default",
"labels": {
"app": "monerod"
}
},
"spec": {
"ports": [
{
"protocol": "TCP",
"port": 18081,
"targetPort": 18081
}
],
"selector": {
"app": "monerod"
},
"clusterIP": "<some-ip>",
"type": "ClusterIP",
"sessionAffinity": "None"
},
"status": {
"loadBalancer": {}
}
}

那看起来很不错。这应该只为集群中的其他服务公开端口 18081。

如果我现在执行
curl -X POST http://monerod-deployment:18081/json_rpc ...

在应该与 monerod 服务对话的 pod 中,这会导致
port 18081: Connection refused

在 monerod-deployment docker 容器中,容器被暴露(使用 EXPOSE 18081)
并且部署具有以下端口定义:
"ports": [
{
"containerPort": 18081,
"protocol": "TCP"
}
],

使用 kubectl 对部署进行端口转发并在本地执行 curl 工作得非常好。
我不明白,为什么无法建立从 pod 到 monerod-deployment 的连接。

最佳答案

发现是错误的,在 Kubernetes 中什么都没有。

出于安全原因,monerod 守护进程默认只允许来自 localhost 的连接。启用外部连接 '--confirm-external-bind' 使其工作。

链接到 https://kubernetes.io/docs/tasks/debug-application-cluster/debug-service/#running-commands-in-a-pod来自 Baltazar 的发现非常有帮助,发现正在发生并一一消除 Kubernetes 中的所有原因!

关于kubernetes - 为 DaemonSet 创建服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48127188/

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