Force delete pods
Bash
kubectl delete pod --grace-period=0 --force {POD_NAME}
Install Prometheus using Helm
Bash
helm install monitor prometheus-community/kube-prometheus-stack \ --version 39.11.0 -n monitor
Prometheus & ServiceMonitor
No need to edit Prometheus config, Prometheus can automatically find your /metrics through service monitor!
flowchart LR
A[Prometheus] -->|Auto detect| B(ServiceMonitor)
B -->|Monitor| C(Service)
subgraph "Provides '/metrics'"
C --> D(Pod A)
C --> E(Pod B)
C --> F(Pod C)
end
Service
Replace followings:
SERVICE_LABEL_KEY,SERVICE_LABEL_VALUE: Used for service monitor to locating service.SERVICE_NAME,SERVICE_PORT_NAME,POD_PORT,SERVICE_PORT: Set by yourself.POD_LABEL_KEY,POD_LABEL_VALUE: Used for locating pods.NAMESPACE: Just namespace.
YAML
apiVersion: v1 kind: Service metadata: labels: {SERVICE_LABEL_KEY}: {SERVICE_LABEL_VALUE} name: {SERVICE_NAME} namespace: {NAMESPACE} spec: ports: - name: {SERVICE_PORT_NAME} port: {POD_PORT} protocol: TCP targetPort: {SERVICE_PORT} selector: {POD_LABEL_KEY}: {POD_LABEL_VALUE} type: ClusterIP
Service Monitor
Replace followings:
SERVICE_LABEL_KEY,SERVICE_LABEL_VALUE,SERVICE_PORT_NAME,NAMESPACE: Keep the same with the service.SERVICE_MONITOR_NAME: Set by yourself.PROM_RELEASE_NAME: Name you have input while installing Prometheus through Helm.
YAML
apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: labels: app: psi-monitor release: {PROM_RELEASE_NAME} name: {SERVICE_MONITOR_NAME} spec: endpoints: - interval: 1s port: {SERVICE_PORT_NAME} relabelings: # Check Prometheus relabeling - action: replace sourceLabels: - __meta_kubernetes_endpoint_node_name targetLabel: node namespaceSelector: matchNames: - {NAMESPACE} selector: matchLabels: {SERVICE_LABEL_KEY}: {SERVICE_LABEL_VALUE}
Setup script: K8S v1.31 + Docker on Ubuntu 22.04+
Let’s GO!
Bash
curl 'https://blog.nicklin.work/posts/my-kubernetes-cheatsheet/k8s-init.sh' | bash
Source Code of k8s-init.sh:
Bash
add_apt_repo() { # Required dependencies sudo apt update && sudo apt install -y ca-certificates curl apt-transport-https gpg wget # Docker repository sudo install -m 0755 -d /etc/apt/keyrings && \ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc && \ sudo chmod a+r /etc/apt/keyrings/docker.asc echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Kubernetes v1.31 repository curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg && \ echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.31/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list } install() { # Install Kubernetes + Docker sudo apt-get update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl # Install cri-docker wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.15/cri-dockerd_0.3.15.3-0.ubuntu-jammy_amd64.deb && sudo dpkg -i cri-dockerd_0.3.15.3-0.ubuntu-jammy_amd64.deb && rm cri-dockerd_0.3.15.3-0.ubuntu-jammy_amd64.deb # Enable kubelet sudo systemctl enable --now kubelet } add_apt_repo && install