From edb327531d88d876b6b3532f2f759aefb1625280 Mon Sep 17 00:00:00 2001 From: karancode <karan.thanvi@paypay-corp.co.jp> Date: Wed, 23 Oct 2019 00:15:25 +0900 Subject: [PATCH] update example --- docs/EKS-cni-support.md | 62 ++++++++++++++++--- examples/eks-cni-example.jsonnet | 55 ++++++++++++++++ .../kube-prometheus-aws-eks-cni.libsonnet | 45 -------------- 3 files changed, 109 insertions(+), 53 deletions(-) create mode 100644 examples/eks-cni-example.jsonnet delete mode 100644 jsonnet/kube-prometheus/kube-prometheus-aws-eks-cni.libsonnet diff --git a/docs/EKS-cni-support.md b/docs/EKS-cni-support.md index b75b749b..e41f38f8 100644 --- a/docs/EKS-cni-support.md +++ b/docs/EKS-cni-support.md @@ -5,14 +5,60 @@ AWS EKS uses [CNI](https://github.com/aws/amazon-vpc-cni-k8s) networking plugin One fatal issue that can occur is that you run out of IP addresses in your eks cluster. (Generally happens due to error configs where pods keep scheduling). You can monitor the `awscni` using kube-promethus with : -``` -local kp = (import 'kube-prometheus/kube-prometheus.libsonnet') + - (import 'kube-prometheus/kube-prometheus-aws-eks-cni.libsonnet') + - { - _config+:: { - # ... config here - } - }; +[embedmd]:# (../examples/eks-cni-example.jsonnet) +```jsonnet +local kp = (import 'kube-prometheus/kube-prometheus-eks.libsonnet') + { + local service = kp.core.v1.service, + local servicePort = kp.core.v1.service.mixin.spec.portsType, + _config+:: { + namespace: 'monitoring', + }, + prometheus+: { + AwsEksCniMetricService: + service.new('aws-node', { 'k8s-app' : 'aws-node' } , servicePort.newNamed('cni-metrics-port', 61678, 61678)) + + service.mixin.metadata.withNamespace('kube-system') + + service.mixin.metadata.withLabels({ 'k8s-app': 'aws-node' }) + + service.mixin.spec.withClusterIp('None'), + serviceMonitorAwsEksCNI: + { + apiVersion: 'monitoring.coreos.com/v1', + kind: 'ServiceMonitor', + metadata: { + name: 'awsekscni', + namespace: kp.namespace, + labels: { + 'k8s-app': 'eks-cni', + }, + }, + spec: { + jobLabel: 'k8s-app', + selector: { + matchLabels: { + 'k8s-app': 'aws-node', + }, + }, + namespaceSelector: { + matchNames: [ + 'kube-system', + ], + }, + endpoints: [ + { + port: 'cni-metrics-port', + interval: '30s', + path: '/metrics', + }, + ], + }, + }, + }, +}; + +{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } + +{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } + +{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + +{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + +{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } ``` After you have the required yaml file please run diff --git a/examples/eks-cni-example.jsonnet b/examples/eks-cni-example.jsonnet new file mode 100644 index 00000000..62c9170c --- /dev/null +++ b/examples/eks-cni-example.jsonnet @@ -0,0 +1,55 @@ +local kp = (import 'kube-prometheus/kube-prometheus-eks.libsonnet') + { + local service = kp.core.v1.service, + local servicePort = kp.core.v1.service.mixin.spec.portsType, + _config+:: { + namespace: 'monitoring', + }, + prometheus+: { + AwsEksCniMetricService: + service.new('aws-node', { 'k8s-app' : 'aws-node' } , servicePort.newNamed('cni-metrics-port', 61678, 61678)) + + service.mixin.metadata.withNamespace('kube-system') + + service.mixin.metadata.withLabels({ 'k8s-app': 'aws-node' }) + + service.mixin.spec.withClusterIp('None'), + serviceMonitorAwsEksCNI: + { + apiVersion: 'monitoring.coreos.com/v1', + kind: 'ServiceMonitor', + metadata: { + name: 'awsekscni', + namespace: kp.namespace, + labels: { + 'k8s-app': 'eks-cni', + }, + }, + spec: { + jobLabel: 'k8s-app', + selector: { + matchLabels: { + 'k8s-app': 'aws-node', + }, + }, + namespaceSelector: { + matchNames: [ + 'kube-system', + ], + }, + endpoints: [ + { + port: 'cni-metrics-port', + interval: '30s', + path: '/metrics', + }, + ], + }, + }, + }, +}; + +{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } + +{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } + +{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } + +{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + +{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + +{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + +{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + +{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } diff --git a/jsonnet/kube-prometheus/kube-prometheus-aws-eks-cni.libsonnet b/jsonnet/kube-prometheus/kube-prometheus-aws-eks-cni.libsonnet deleted file mode 100644 index aa749534..00000000 --- a/jsonnet/kube-prometheus/kube-prometheus-aws-eks-cni.libsonnet +++ /dev/null @@ -1,45 +0,0 @@ -local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet'; -local service = k.core.v1.service; -local servicePort = k.core.v1.service.mixin.spec.portsType; - -{ - prometheus+: { - AwsEksCniMetricService: - service.new('aws-node', { 'k8s-app' : 'aws-node' } , servicePort.newNamed('cni-metrics-port', 61678, 61678)) + - service.mixin.metadata.withNamespace('kube-system') + - service.mixin.metadata.withLabels({ 'k8s-app': 'aws-node' }) + - service.mixin.spec.withClusterIp('None'), - serviceMonitorAwsEksCNI: - { - apiVersion: 'monitoring.coreos.com/v1', - kind: 'ServiceMonitor', - metadata: { - name: 'awsekscni', - namespace: 'monitoring', - labels: { - 'k8s-app': 'eks-cni', - }, - }, - spec: { - jobLabel: 'k8s-app', - selector: { - matchLabels: { - 'k8s-app': 'aws-node', - }, - }, - namespaceSelector: { - matchNames: [ - 'kube-system', - ], - }, - endpoints: [ - { - port: 'cni-metrics-port', - interval: '30s', - path: '/metrics', - }, - ], - }, - }, - }, -} -- GitLab