-
Notifications
You must be signed in to change notification settings - Fork 183
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
d21ba73
commit 2d93b57
Showing
2 changed files
with
170 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
context_name="karpenter-test-kind-cluster" | ||
prom_ns="prometheus" | ||
kind create cluster --name ${context_name} | ||
cd .. | ||
cd .. | ||
cd .. | ||
make apply-with-kind | ||
cat <<EOF | envsubst | kubectl apply -f - | ||
apiVersion: karpenter.sh/v1beta1 | ||
kind: NodePool | ||
metadata: | ||
name: default | ||
spec: | ||
template: | ||
spec: | ||
requirements: | ||
- key: kubernetes.io/arch | ||
operator: In | ||
values: ["amd64"] | ||
- key: kubernetes.io/os | ||
operator: In | ||
values: ["linux"] | ||
- key: karpenter.sh/capacity-type | ||
operator: In | ||
values: ["spot"] | ||
nodeClassRef: | ||
name: nil | ||
limits: | ||
cpu: 1500 | ||
disruption: | ||
consolidationPolicy: WhenUnderutilized | ||
expireAfter: 720h # 30 * 24h = 720h | ||
EOF | ||
kubectl create namespace "$prom_ns" | ||
helm upgrade --values valuesv3.yaml --install prometheus prometheus-community/kube-prometheus-stack -n "$prom_ns" \ | ||
--set "kubelet.serviceMonitor.cAdvisorRelabelings[0].targetLabel=metrics_path" \ | ||
--set "kubelet.serviceMonitor.cAdvisorRelabelings[0].action=replace" \ | ||
--set "kubelet.serviceMonitor.cAdvisorRelabelings[0].sourceLabels[0]=__metrics_path__" \ | ||
--set "kubelet.serviceMonitor.cAdvisorRelabelings[1].targetLabel=clusterName" \ | ||
--set "kubelet.serviceMonitor.cAdvisorRelabelings[1].replacement=$CLUSTER_NAME" \ | ||
--set "kubelet.serviceMonitor.cAdvisorRelabelings[2].targetLabel=gitRef" \ | ||
--set "kubelet.serviceMonitor.cAdvisorRelabelings[2].replacement=$(git rev-parse HEAD)" \ | ||
--set "kubelet.serviceMonitor.cAdvisorRelabelings[3].targetLabel=mostRecentTag" \ | ||
--set "kubelet.serviceMonitor.cAdvisorRelabelings[3].replacement=$(git describe --abbrev=0 --tags)" \ | ||
--set "kubelet.serviceMonitor.cAdvisorRelabelings[4].targetLabel=commitsAfterTag" \ | ||
--set "kubelet.serviceMonitor.cAdvisorRelabelings[4].replacement=\"$(git describe --tags | cut -d '-' -f 2)\"" \ | ||
--wait | ||
# Testing out pyroscope for profiling | ||
helm repo add grafana https://grafana.github.io/helm-charts | ||
helm repo update | ||
# This only creates one replica for testing, but not multiple backends | ||
#kubectl create namespace pyroscope-test | ||
helm -n karpenter install pyroscope grafana/pyroscope | ||
make test | ||
read -p "press enter to delete cluster" temp_var | ||
kind delete cluster --name ${context_name} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
prometheus: | ||
prometheusSpec: | ||
serviceMonitorSelector: {} | ||
serviceMonitorNamespaceSelector: {} | ||
additionalScrapeConfigs: | ||
- job_name: serviceMonitor/karpenter/karpenter/0 | ||
honor_timestamps: true | ||
track_timestamps_staleness: false | ||
scrape_interval: 30s | ||
scrape_timeout: 10s | ||
scrape_protocols: | ||
- OpenMetricsText1.0.0 | ||
- OpenMetricsText0.0.1 | ||
- PrometheusText0.0.4 | ||
metrics_path: /metrics | ||
scheme: http | ||
enable_compression: true | ||
follow_redirects: true | ||
enable_http2: true | ||
relabel_configs: | ||
- source_labels: [ job ] | ||
separator: ; | ||
regex: (.*) | ||
target_label: __tmp_prometheus_job_name | ||
replacement: $1 | ||
action: replace | ||
- source_labels: [ __meta_kubernetes_service_label_app_kubernetes_io_instance, __meta_kubernetes_service_labelpresent_app_kubernetes_io_instance ] | ||
separator: ; | ||
regex: (karpenter);true | ||
replacement: $1 | ||
action: keep | ||
- source_labels: [ __meta_kubernetes_service_label_app_kubernetes_io_name, __meta_kubernetes_service_labelpresent_app_kubernetes_io_name ] | ||
separator: ; | ||
regex: (karpenter);true | ||
replacement: $1 | ||
action: keep | ||
- source_labels: [ __meta_kubernetes_endpoint_port_name ] | ||
separator: ; | ||
regex: http-metrics | ||
replacement: $1 | ||
action: keep | ||
- source_labels: [ __meta_kubernetes_endpoint_address_target_kind, __meta_kubernetes_endpoint_address_target_name ] | ||
separator: ; | ||
regex: Node;(.*) | ||
target_label: node | ||
replacement: ${1} | ||
action: replace | ||
- source_labels: [ __meta_kubernetes_endpoint_address_target_kind, __meta_kubernetes_endpoint_address_target_name ] | ||
separator: ; | ||
regex: Pod;(.*) | ||
target_label: pod | ||
replacement: ${1} | ||
action: replace | ||
- source_labels: [ __meta_kubernetes_namespace ] | ||
separator: ; | ||
regex: (.*) | ||
target_label: namespace | ||
replacement: $1 | ||
action: replace | ||
- source_labels: [ __meta_kubernetes_service_name ] | ||
separator: ; | ||
regex: (.*) | ||
target_label: service | ||
replacement: $1 | ||
action: replace | ||
- source_labels: [ __meta_kubernetes_pod_name ] | ||
separator: ; | ||
regex: (.*) | ||
target_label: pod | ||
replacement: $1 | ||
action: replace | ||
- source_labels: [ __meta_kubernetes_pod_container_name ] | ||
separator: ; | ||
regex: (.*) | ||
target_label: container | ||
replacement: $1 | ||
action: replace | ||
- source_labels: [ __meta_kubernetes_pod_phase ] | ||
separator: ; | ||
regex: (Failed|Succeeded) | ||
replacement: $1 | ||
action: drop | ||
- source_labels: [ __meta_kubernetes_service_name ] | ||
separator: ; | ||
regex: (.*) | ||
target_label: job | ||
replacement: ${1} | ||
action: replace | ||
- separator: ; | ||
regex: (.*) | ||
target_label: endpoint | ||
replacement: http-metrics | ||
action: replace | ||
- source_labels: [ __address__ ] | ||
separator: ; | ||
regex: (.*) | ||
modulus: 1 | ||
target_label: __tmp_hash | ||
replacement: $1 | ||
action: hashmod | ||
- source_labels: [ __tmp_hash ] | ||
separator: ; | ||
regex: "0" | ||
replacement: $1 | ||
action: keep | ||
kubernetes_sd_configs: | ||
- role: endpoints | ||
kubeconfig_file: "" | ||
follow_redirects: true | ||
enable_http2: true | ||
namespaces: | ||
own_namespace: false | ||
names: | ||
- karpenter |