## K8S Spec
1. OS: Ubuntu 20.04.5 LTS"
2. k8s provisining: kubespray-v2.22.0
3. k8s 버전:
[spkr@ubun20-01 ~ (⎈|ubun01:default)]$ kgn
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
ubun20-01 Ready control-plane 26d v1.25.0 192.168.119.131 <none> Ubuntu 20.04.5 LTS 5.4.0-156-generic containerd://1.7.1
ubun20-02 Ready control-plane 26d v1.25.0 192.168.119.132 <none> Ubuntu 20.04.5 LTS 5.4.0-156-generic containerd://1.7.1
ubun20-03 Ready control-plane 26d v1.25.0 192.168.119.133 <none> Ubuntu 20.04.5 LTS 5.4.0-156-generic containerd://1.7.1
## 사전 작업 필요
1. OpenEBS - 스토리지 클래스 설치
[spkr@ubun20-01 ~ (⎈|ubun01:nginx)]$ k get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
openebs-device openebs.io/local Delete WaitForFirstConsumer false 22h
openebs-hostpath openebs.io/local Delete WaitForFirstConsumer false 22h
2. MetalLB - Loadbalace 사용 필요
[spkr@ubun20-01 metallb-0.12.1 (⎈|ubun01:metallb)]$ kgp
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
metallb-controller-7898b886f6-jsdp8 1/1 Running 0 51s 10.233.104.224 ubun20-01 <none> <none>
metallb-speaker-4mnqq 1/1 Running 0 51s 192.168.119.132 ubun20-02 <none> <none>
metallb-speaker-j8wpm 1/1 Running 0 51s 192.168.119.133 ubun20-03 <none> <none>
metallb-speaker-s6lgz 1/1 Running 0 51s 192.168.119.131 ubun20-01 <none> <none>
https://www.cncf.io/announcements/2018/08/09/prometheus-graduates/
https://prometheus.io/docs/introduction/overview/#features
# 프로메테우스-스택 리포지토리 추가
[spkr@ubun20-01 ~ (⎈|ubun01:default)]$ cd prometheus-stack/
[spkr@ubun20-01 prometheus-stack (⎈|ubun01:default)]$ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
"prometheus-community" has been added to your repositories
[spkr@ubun20-01 prometheus-stack (⎈|ubun01:default)]$ helm repo list
NAME URL
bitnami https://charts.bitnami.com/bitnami
prometheus-community **https://prometheus-community.github.io/helm-charts**
# 프로메테우스-스택 다운로드
[spkr@ubun20-01 prometheus-stack (⎈|ubun01:default)]$ helm pull prometheus-community/kube-prometheus-stack
[spkr@ubun20-01 prometheus-stack (⎈|ubun01:default)]$ tar xvfz kube-prometheus-stack-50.3.1.tgz
[spkr@ubun20-01 prometheus-stack (⎈|ubun01:default)]$ rm -f kube-prometheus-stack-50.3.1.tgz
[spkr@ubun20-01 prometheus-stack (⎈|ubun01:default)]$ mv kube-prometheus-stack/ kube-prometheus-stack-50.3.1
[spkr@ubun20-01 prometheus-stack (⎈|ubun01:default)]$ ll
total 12
drwxrwxr-x 3 spkr spkr 4096 Sep 6 15:10 ./
drwxr-xr-x 11 spkr spkr 4096 Sep 6 15:06 ../
drwxrwxr-x 4 spkr spkr 4096 Sep 6 15:09 kube-prometheus-stack-50.3.1/
[spkr@ubun20-01 prometheus-stack (⎈|ubun01:default)]$ cd kube-prometheus-stack-50.3.1/
[spkr@ubun20-01 kube-prometheus-stack-50.3.1 (⎈|ubun01:default)]$ ll
total 232
drwxrwxr-x 4 spkr spkr 4096 Sep 6 15:09 ./
drwxrwxr-x 3 spkr spkr 4096 Sep 6 15:10 ../
-rw-r--r-- 1 spkr spkr 615 Sep 5 10:54 Chart.lock
drwxrwxr-x 7 spkr spkr 4096 Sep 6 15:09 charts/
-rw-r--r-- 1 spkr spkr 2073 Sep 5 10:54 Chart.yaml
-rw-r--r-- 1 spkr spkr 656 Sep 5 10:54 CONTRIBUTING.md
-rw-r--r-- 1 spkr spkr 398 Sep 5 10:54 .helmignore
-rw-r--r-- 1 spkr spkr 62965 Sep 5 10:54 README.md
drwxrwxr-x 8 spkr spkr 4096 Sep 6 15:09 templates/
-rw-r--r-- 1 spkr spkr 138754 Sep 5 10:54 values.yaml
[spkr@ubun20-01 kube-prometheus-stack-50.3.1 (⎈|ubun01:default)]$ cp values.yaml my-values.yaml
# 프로메테우스-스택 템플릿 변수 수정
[spkr@ubun20-01 kube-prometheus-stack-50.3.1 (⎈|ubun01:default)]$ vi my-values.yaml
alertmanager:
## Deploy alertmanager
##
enabled: true
## Service type
##
type: NodePort
kubeApiServer:
enabled: true
tlsConfig:
serverName: kubernetes
insecureSkipVerify: false
serviceMonitor:
storageSpec: {}
## Using PersistentVolumeClaim
##
volumeClaimTemplate:
spec:
storageClassName: openebs-hostpath
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 15Gi
# 그라파나 템플릿 변수 수정
[spkr@ubun20-01 kube-prometheus-stack-50.3.1 (⎈|ubun01:openebs)]$ ls charts/
crds grafana kube-state-metrics prometheus-node-exporter prometheus-windows-exporter
[spkr@ubun20-01 kube-prometheus-stack-50.3.1 (⎈|ubun01:openebs)]$ vi charts/grafana/values.yaml
service:
enabled: true
type: LoadBalancer
port: 80
targetPort: 3000
persistence:
type: pvc
enabled: false
storageClassName: openebs-hostpath
[spkr@ubun20-01 kube-prometheus-stack-50.3.1 (⎈|ubun01:openebs)]$ k create ns monitoring
namespace/monitoring created
[spkr@ubun20-01 kube-prometheus-stack-50.3.1 (⎈|ubun01:openebs)]$ k ns monitoring
Context "ubun01" modified.
Active namespace is "monitoring".
[spkr@ubun20-01 kube-prometheus-stack-50.3.1 (⎈|ubun01:monitoring)]$ helm install prometheus -f my-values.yaml .
NAME: prometheus
LAST DEPLOYED: Wed Sep 6 15:20:53 2023
NAMESPACE: monitoring
STATUS: deployed
REVISION: 1
NOTES:
kube-prometheus-stack has been installed. Check its status by running:
kubectl --namespace monitoring get pods -l "release=prometheus"
Visit https://github.com/prometheus-operator/kube-prometheus for instructions on how to create & configure Alertmanager and Prometheus instances using the Operator.
[spkr@ubun20-01 kube-prometheus-stack-50.3.1 (⎈|ubun01:monitoring)]$ helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
prometheus monitoring 1 2023-09-06 15:20:53.138685417 +0000 UTC deployed **kube-prometheus-stack-50.3.1** v0.67.1


https://prometheus.io/docs/introduction/overview/#architecture

[spkr@ubun20-01 kube-prometheus-stack-50.3.1 (⎈|ubun01:monitoring)]$ kgp
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
alertmanager-prometheus-kube-prometheus-**alertmanager-0** 2/2 Running 0 4m20s 10.233.104.211 ubun20-01 <none> <none>
prometheus-**grafana**-7dd9ccd99b-zwdgv 3/3 Running 0 4m35s 10.233.109.140 ubun20-02 <none> <none>
prometheus-kube-**prometheus-operator**-6bdbffdc8b-5dvqh 1/1 Running 0 4m35s 10.233.104.209 ubun20-01 <none> <none>
prometheus-**kube-state-metrics**-648b666689-bjbv6 1/1 Running 0 4m35s 10.233.70.11 ubun20-03 <none> <none>
prometheus-prometheus-kube-prometheus-**prometheus-0** 2/2 Running 0 4m19s 10.233.70.13 ubun20-03 <none> <none>
prometheus-prometheus-**node-exporter**-kd7pd 1/1 Running 0 4m35s 192.168.119.131 ubun20-01 <none> <none>
prometheus-prometheus-node-exporter-rnxx7 1/1 Running 0 4m34s 192.168.119.132 ubun20-02 <none> <none>
prometheus-prometheus-node-exporter-svsbz 1/1 Running 0 4m34s 192.168.119.133 ubun20-03 <none> <none>
[spkr@ubun20-01 kube-prometheus-stack-50.3.1 (⎈|ubun01:monitoring)]$ kgs
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 37m app.kubernetes.io/name=alertmanager
prometheus-grafana LoadBalancer 10.233.33.147 192.168.119.151 80:30173/TCP 37m app.kubernetes.io/instance=prometheus,app.kubernetes.io/name=grafana
prometheus-kube-prometheus-alertmanager ClusterIP 10.233.37.149 <none> 9093/TCP,8080/TCP 37m alertmanager=prometheus-kube-prometheus-alertmanager,app.kubernetes.io/name=alertmanager
prometheus-kube-prometheus-operator ClusterIP 10.233.34.231 <none> 443/TCP 37m app=kube-prometheus-stack-operator,release=prometheus
prometheus-kube-prometheus-prometheus NodePort 10.233.31.130 <none> 9090:30090/TCP,8080:31734/TCP 37m app.kubernetes.io/name=prometheus,operator.prometheus.io/name=prometheus-kube-prometheus-prometheus
prometheus-kube-state-metrics ClusterIP 10.233.6.21 <none> 8080/TCP 37m app.kubernetes.io/instance=prometheus,app.kubernetes.io/name=kube-state-metrics
prometheus-operated ClusterIP None <none> 9090/TCP 37m app.kubernetes.io/name=prometheus
**prometheus-prometheus-node-exporter** ClusterIP 10.233.26.92 <none> 9100/TCP 37m app.kubernetes.io/instance=prometheus,app.kubernetes.io/name=prometheus-node-exporter
[spkr@ubun20-01 kube-prometheus-stack-50.3.1 (⎈|ubun01:monitoring)]$ k port-forward svc/prometheus-prometheus-node-exporter 8080:9100
Forwarding from 127.0.0.1:8080 -> 9100
Forwarding from [::1]:8080 -> 9100
[spkr@ubun20-01 ~ (⎈|ubun01:monitoring)]$ curl localhost:8080/metrics
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 1.498e-05
go_gc_duration_seconds{quantile="0.25"} 3.4287e-05
go_gc_duration_seconds{quantile="0.5"} 3.7335e-05
go_gc_duration_seconds{quantile="0.75"} 4.4596e-05
go_gc_duration_seconds{quantile="1"} 0.000162875
go_gc_duration_seconds_sum 0.004808126
go_gc_duration_seconds_count 106
# HELP go_goroutines Number of goroutines that currently exist.
# TYPE go_goroutines gauge
go_goroutines 8
# HELP go_info Information about the Go environment.
# TYPE go_info gauge
go_info{version="go1.20.6"} 1
# HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
# TYPE go_memstats_alloc_bytes gauge
go_memstats_alloc_bytes 2.559208e+06
[spkr@ubun20-01 kube-prometheus-stack-50.3.1 (⎈|ubun01:monitoring)]$ kgs
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 43m app.kubernetes.io/name=alertmanager
prometheus-grafana LoadBalancer 10.233.33.147 192.168.119.151 80:30173/TCP 43m app.kubernetes.io/instance=prometheus,app.kubernetes.io/name=grafana
prometheus-kube-prometheus-alertmanager ClusterIP 10.233.37.149 <none> 9093/TCP,8080/TCP 43m alertmanager=prometheus-kube-prometheus-alertmanager,app.kubernetes.io/name=alertmanager
prometheus-kube-prometheus-operator ClusterIP 10.233.34.231 <none> 443/TCP 43m app=kube-prometheus-stack-operator,release=prometheus
prometheus-kube-prometheus-prometheus NodePort 10.233.31.130 <none> 9090:**30090**/TCP,8080:31734/TCP 43m app.kubernetes.io/name=prometheus,operator.prometheus.io/name=prometheus-kube-prometheus-prometheus
prometheus-kube-state-metrics ClusterIP 10.233.6.21 <none> 8080/TCP 43m app.kubernetes.io/instance=prometheus,app.kubernetes.io/name=kube-state-metrics
prometheus-operated ClusterIP None <none> 9090/TCP 43m app.kubernetes.io/name=prometheus
prometheus-prometheus-node-exporter ClusterIP 10.233.26.92 <none> 9100/TCP 43m app.kubernetes.io/instance=prometheus,app.kubernetes.io/name=prometheus-node-exporter
[spkr@ubun20-01 kube-prometheus-stack-50.3.1 (⎈|ubun01:monitoring)]$ kgn -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
ubun20-01 Ready control-plane 26d v1.25.0 192.168.119.131 <none> Ubuntu 20.04.5 LTS 5.4.0-156-generic containerd://1.7.1
ubun20-02 Ready control-plane 26d v1.25.0 192.168.119.132 <none> Ubuntu 20.04.5 LTS 5.4.0-156-generic containerd://1.7.1
ubun20-03 Ready control-plane 26d v1.25.0 192.168.119.133 <none> Ubuntu 20.04.5 LTS 5.4.0-156-generic containerd://1.7.


