k8s集群部署datakit报错及排错

1、使用sealos安装k8s

wget https://static.guance.com/dataflux/package/sealos_4.1.5_linux_amd64.tar.gz \
   && tar zxvf sealos_4.1.5_linux_amd64.tar.gz sealos && chmod +x sealos && mv sealos /usr/bin

验证是否部署成功

sealos -h

在这里插入图片描述

安装集群

sealos run pubrepo.guance.com/googleimages/kubernetes:v1.24.0 \
    pubrepo.guance.com/googleimages/calico:v3.22.1 \
    --masters [master私网IP]     \
    --nodes [worker私网IP]    \
    --passwd [your-ssh-passwd] 

2、部署Datakit

wget https://static.guance.com/datakit/datakit.yaml
在yaml中修改token为观测云的token(token可以在观测云控制台-集成部分查看)
复制yaml并以daemonset方式部署
kubectl apply -f datakit.yaml

部署之后正常应该是主机、容器等等数据都会上报到观测云

但是这里发现,在datakit 的pod中输入datakit monitor显示有数据采集但是在观测云控制台并没有数据上报

3、错误排查

首先查看的是pod的log

kubectl logs pod-name
报错:
dataway dataway/endpoint.go:393 sendReq: request url https://openway.guance.com/v1/write/metric?token=tkn_d1b06a2b62004e4795be7350822dbacc failed(proxy: ): all-retry-failed, resp: <nil>

这里应该是到https://openway.guance.com/v1/write/metric这个url请求失败,这里可以看到ailed(proxy: ):这个部分说明请求可能设置了代理(proxy),但在这个错误消息中未明确指出代理的具体信息。

在datakit pod内curl这个url https://openway.guance.com发现不能成功

root@worker01:/usr/local/datakit# curl https://openway.guance.com
curl: (6) Could not resolve host: openway.guance.com 

容器内应该是可以成功curl这个地址才正确,这个问题可能是由网络配置问题或DNS (域名系统) 解析问题导致的。

检查DNS的服务器设置

在 Kubernetes pod 容器内遇到 DNS 解析问题时,问题可能与 Kubernetes 集群的 DNS 配置或网络策略有关

1、检查 CoreDNS 服务

首先确认 CoreDNS pod 是否在运行且健康:

kubectl get pods -n kube-system | grep coredns

2、检查DNS解析:

从 pod 内部使用 nslookupdig 命令来测试 DNS 解析,但是我的pod中没有这些命令

从 pod 内部使用 nslookup 或 dig 命令来测试 DNS 解析

由于你提到在一个集群中可以访问,而在另一个不行,很可能是 CoreDNS(或集群使用的任何 DNS 服务)配置或状态的问题。

3、检查 CoreDNS 的日志和状态

kubectl get pods -n kube-system -l k8s-app=kube-dns
kubectl logs -n kube-system <coredns-pod-name>

检查 CoreDNS 的日志和状态:kubectl logs -n kube-system 显示这样[ERROR] plugin/errors: 2 openway.guance.com. A: read udp 100.125.226.xxx:34098->100.100.2.xxx:53: i/o timeout
[ERROR] plugin/errors: 2 openway.guance.com. AAAA: read udp 100.125.226.xxx:51692->100.100.2.xxx:53: i/o timeout

日志错误信息来看,当尝试解析 openway.guance.com 这个域名时,DNS 查询到 100.100.2.138 的请求超时了。这个问题表明 DNS 查询无法从配置的上游 DNS 服务器(100.100.2.138)收到响应。这种情况可以确定跟网络连接问题或 DNS 服务器配置问题有关

4、检查DNS配置文件

在 pod 内部,查看 /etc/resolv.conf 文件,确保它被正确设置以使用集群的 DNS 服务:

cat /etc/resolv.conf

5、检查 DNS 服务配置(CoreDNS ConfigMap)

检查 CoreDNS 的 ConfigMap 设置,确保 DNS 解析规则正确无误:

kubectl describe configmap coredns -n kube-system

6、修改 CoreDNS 的配置

如果确认 100.100.2.138 有问题,考虑更换或添加额外的上游 DNS 服务器。你可以编辑 CoreDNS 的配置文件 Corefile,这通常在 ConfigMap 中定义:

kubectl edit configmap coredns -n kube-system

在 ConfigMap 的 Corefile 部分,如果它使用 /etc/resolv.conf,检查节点的 /etc/resolv.conf 文件是否包含正确的 DNS 服务器信息。或者,你可以直接在 forward 行指定一个已知可靠的 DNS 服务器地址(如 Google 的 8.8.8.8 或 Cloudflare 的 1.1.1.1

.:53 {
    forward . 8.8.8.8 1.1.1.1
    errors
    health {
       lameduck 5s
    }
    ready
    kubernetes cluster.local in-addr.arpa ip6.arpa {
       pods insecure
       fallthrough in-addr.arpa ip6.arpa
       ttl 30
    }
    prometheus :9153
    cache 30
    loop
    reload
    loadbalance
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

7、更改并应用监控

更新 CoreDNS 配置后,确保重新加载或重启 CoreDNS Pod

kubectl rollout restart deployment coredns -n kube-system

检查DNS

kubectl exec -ti datakit-xvjzj -n datakit -- curl https://openway.guance.com

显示正常,数据正常上报

在这里插入图片描述
在这里插入图片描述

  • 20
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值