让prometheus/grafana和k3s一起工作



为了学习kubernetes,我使用4个Raspberry pi构建了一个裸机集群,使用k3s进行设置:

# curl -sfL https://get.k3s.io | sh -

添加了节点等,所有的东西都出现了,我可以看到所有的节点,几乎所有的东西都按预期工作。

我想监视pi,所以我用helm安装了kube-prometheus-stack:

$ kubectl create namespace monitoring
$ helm install prometheus --namespace monitoring prometheus-community/kube-prometheus-stack

现在一切看起来都很棒:

$ kubectl get pods --all-namespaces 
NAMESPACE     NAME                                                     READY   STATUS      RESTARTS   AGE
kube-system   helm-install-traefik-crd-s8zw5                           0/1     Completed   0          5d21h
kube-system   helm-install-traefik-rc9f2                               0/1     Completed   1          5d21h
monitoring    prometheus-prometheus-node-exporter-j85rw                1/1     Running     10         28h
kube-system   metrics-server-86cbb8457f-mvbkl                          1/1     Running     12         5d21h
kube-system   coredns-7448499f4d-t7sp8                                 1/1     Running     13         5d21h
monitoring    prometheus-prometheus-node-exporter-mmh2q                1/1     Running     9          28h
monitoring    prometheus-prometheus-node-exporter-j4k4c                1/1     Running     10         28h
monitoring    alertmanager-prometheus-kube-prometheus-alertmanager-0   2/2     Running     10         28h
kube-system   svclb-traefik-zkqd6                                      2/2     Running     6          19h
monitoring    prometheus-prometheus-node-exporter-bft5t                1/1     Running     10         28h
kube-system   local-path-provisioner-5ff76fc89d-g8tm6                  1/1     Running     12         5d21h
kube-system   svclb-traefik-jcxd2                                      2/2     Running     28         5d21h
kube-system   svclb-traefik-mpbjm                                      2/2     Running     22         5d21h
kube-system   svclb-traefik-7kxtw                                      2/2     Running     20         5d21h
monitoring    prometheus-grafana-864598fd54-9548l                      2/2     Running     10         28h
kube-system   traefik-65969d48c7-9lh9m                                 1/1     Running     3          19h
monitoring    prometheus-prometheus-kube-prometheus-prometheus-0       2/2     Running     10         28h
monitoring    prometheus-kube-state-metrics-76f66976cb-m8k2h           1/1     Running     6          28h
monitoring    prometheus-kube-prometheus-operator-5c758db547-zsv4s     1/1     Running     6          28h

服务都在那里:

$ kubectl get services --all-namespaces
NAMESPACE     NAME                                                 TYPE           CLUSTER-IP      EXTERNAL-IP                                                   PORT(S)                        AGE
default       kubernetes                                           ClusterIP      10.43.0.1       <none>                                                        443/TCP                        5d21h
kube-system   kube-dns                                             ClusterIP      10.43.0.10      <none>                                                        53/UDP,53/TCP,9153/TCP         5d21h
kube-system   metrics-server                                       ClusterIP      10.43.80.65     <none>                                                        443/TCP                        5d21h
kube-system   prometheus-kube-prometheus-kube-proxy                ClusterIP      None            <none>                                                        10249/TCP                      28h
kube-system   prometheus-kube-prometheus-kube-scheduler            ClusterIP      None            <none>                                                        10251/TCP                      28h
monitoring    prometheus-kube-prometheus-operator                  ClusterIP      10.43.180.73    <none>                                                        443/TCP                        28h
kube-system   prometheus-kube-prometheus-coredns                   ClusterIP      None            <none>                                                        9153/TCP                       28h
kube-system   prometheus-kube-prometheus-kube-etcd                 ClusterIP      None            <none>                                                        2379/TCP                       28h
kube-system   prometheus-kube-prometheus-kube-controller-manager   ClusterIP      None            <none>                                                        10252/TCP                      28h
monitoring    prometheus-kube-prometheus-alertmanager              ClusterIP      10.43.195.99    <none>                                                        9093/TCP                       28h
monitoring    prometheus-prometheus-node-exporter                  ClusterIP      10.43.171.218   <none>                                                        9100/TCP                       28h
monitoring    prometheus-grafana                                   ClusterIP      10.43.20.165    <none>                                                        80/TCP                         28h
monitoring    prometheus-kube-prometheus-prometheus                ClusterIP      10.43.207.29    <none>                                                        9090/TCP                       28h
monitoring    prometheus-kube-state-metrics                        ClusterIP      10.43.229.14    <none>                                                        8080/TCP                       28h
kube-system   prometheus-kube-prometheus-kubelet                   ClusterIP      None            <none>                                                        10250/TCP,10255/TCP,4194/TCP   28h
monitoring    alertmanager-operated                                ClusterIP      None            <none>                                                        9093/TCP,9094/TCP,9094/UDP     28h
monitoring    prometheus-operated                                  ClusterIP      None            <none>                                                        9090/TCP                       28h
kube-system   traefik                                              LoadBalancer   10.43.20.17     192.168.76.200,192.168.76.201,192.168.76.202,192.168.76.203   80:31131/TCP,443:31562/TCP     5d21h

名称空间:

$ kubectl get namespaces 
NAME              STATUS   AGE
kube-system       Active   5d21h
default           Active   5d21h
kube-public       Active   5d21h
kube-node-lease   Active   5d21h
monitoring        Active   28h

但是我无法联系到grafana服务。

很好,我想,让我们定义一个入口,但它没有工作:

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: grafana-ingress
namespace: monitoring
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:
- http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: prometheus-grafana
port:
number: 80

我不知道为什么它没有得到服务,我不能真正看到问题在哪里,虽然我理解容器等(我第一次有一切在docker swarm上运行),我真的不知道在哪里,如果在任何地方,它会显示在日志中。

我在过去的几天里尝试了各种各样的东西,我终于找到了一个关于名称空间和调用服务的问题的提示,以及一个名为"type: externalname"的东西。

我从集群内的一个pod中检查了curl,它正在"监控"中传递数据。名称空间,但交通工具无法到达或甚至看不到它?

查看了Traefik文档后,我发现了关于名称空间的这一点,但我不知道从哪里开始找到提到的:

providers:
kubernetesCRD:
namespaces:

我假设k3s已经正确地将其设置为空数组,因为我在他们的网站上找不到任何东西告诉我如何处理他们的组合" klippper -lb"one_answers"traefik".

我终于尝试用外部名称定义另一个服务:

---
apiVersion: v1
kind: Service
metadata:
name: grafana-named
namespace: kube-system
spec:
type: ExternalName
externalName: prometheus-grafana.monitoring.svc.cluster.local
ports:
- name: service
protocol: TCP
port: 80
targetPort: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: grafana-ingress
namespace: kube-system
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:
- http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: grafana-named
port:
number: 80

2-3天后,我尝试了我能想到的所有方法,谷歌下所有的东西,我无法从内部集群节点外部获得grafana。

我不知道如何用k3s做任何事情。我在我的主PC上安装了Lens,几乎可以看到所有东西,但我认为缺失的参数信息也需要一个入口或类似的东西。

我要做什么才能让traefk做我认为基本上是它的工作,路由传入请求到后端服务?

我在github和那里的一个人(再次感谢brandond)上提交了一个bug报告)给我指了正确的方向。

网络层使用法兰绒处理集群中的;网络。它的默认实现是"vxlan"对于虚拟以太网适配器,这似乎更复杂。

对于我的需求(阅读:使集群均匀工作),解决方案是将实现更改为"host-gw"

通过添加"——flannnel -backend=host-gw"到k3。控制器上的服务选项。

$ sudo systemctl edit k3s.service
### Editing /etc/systemd/system/k3s.service.d/override.conf
### Anything between here and the comment below will become the new contents of the file
[Service]
ExecStart=
ExecStart=/usr/local/bin/k3s 
server 
'--flannel-backend=host-gw'
### Lines below this comment will be discarded

第一个"ExecStart="清除现有的默认启动命令,使其可以被第二个启动命令取代。

现在一切都如我所料,我终于可以继续学习k8了。

我可能会重新激活"vxlan"总有一天,你会明白的。

相关内容

  • 没有找到相关文章

最新更新