Compare commits
5
Commits
88c70a96ab
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c8aabe2532 | ||
|
|
86f971fb35 | ||
|
|
fd14473b99 | ||
|
|
e8fe8c449c | ||
|
|
3433a2f7f2 |
@@ -12,11 +12,13 @@ Kubernetes is an open‑source platform that automates the deployment, scaling,
|
|||||||
- [OOMKilled](#oomkilled)
|
- [OOMKilled](#oomkilled)
|
||||||
- [Attach to an pod](#attach-to-an-pod)
|
- [Attach to an pod](#attach-to-an-pod)
|
||||||
- [Run command on pod](#run-command-on-pod)
|
- [Run command on pod](#run-command-on-pod)
|
||||||
|
- [Container TTY](#container-tty)
|
||||||
- [Persistent volumes](#persistent-volumes)
|
- [Persistent volumes](#persistent-volumes)
|
||||||
- [create PersistentVolumes - host path](#create-persistentvolumes---host-path)
|
- [create PersistentVolumes - host path](#create-persistentvolumes---host-path)
|
||||||
- [find persistent volume used pvc](#find-persistent-volume-used-pvc)
|
- [find persistent volume used pvc](#find-persistent-volume-used-pvc)
|
||||||
- [Patch pv - change to retain policy](#patch-pv---change-to-retain-policy)
|
- [Patch pv - change to retain policy](#patch-pv---change-to-retain-policy)
|
||||||
- [Patch pv - remove finalizers](#patch-pv---remove-finalizers)
|
- [Patch pv - remove finalizers](#patch-pv---remove-finalizers)
|
||||||
|
- [check orphans](#check-orphans)
|
||||||
- [persistent volume claims](#persistent-volume-claims)
|
- [persistent volume claims](#persistent-volume-claims)
|
||||||
- [Create an pod with PVC](#create-an-pod-with-pvc)
|
- [Create an pod with PVC](#create-an-pod-with-pvc)
|
||||||
- [kubectl](#kubectl)
|
- [kubectl](#kubectl)
|
||||||
@@ -57,6 +59,7 @@ Kubernetes is an open‑source platform that automates the deployment, scaling,
|
|||||||
- [k3s](#k3s)
|
- [k3s](#k3s)
|
||||||
- [Install / Setup](#install--setup)
|
- [Install / Setup](#install--setup)
|
||||||
- [prune old images](#prune-old-images)
|
- [prune old images](#prune-old-images)
|
||||||
|
- [kill all](#kill-all)
|
||||||
- [Prune ephemeral containerd data](#prune-ephemeral-containerd-data)
|
- [Prune ephemeral containerd data](#prune-ephemeral-containerd-data)
|
||||||
- [check system logs](#check-system-logs)
|
- [check system logs](#check-system-logs)
|
||||||
- [Workarounds \& Fixes](#workarounds--fixes)
|
- [Workarounds \& Fixes](#workarounds--fixes)
|
||||||
@@ -223,7 +226,7 @@ kubectl delete pod -n appNamespace -l app=myAppName
|
|||||||
|
|
||||||
### OOMKilled
|
### OOMKilled
|
||||||
|
|
||||||
**list all OOMKilled pods:**
|
**list all OOMKilled:**
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
kubectl get events --all-namespaces | grep -i "OOMKilled"
|
kubectl get events --all-namespaces | grep -i "OOMKilled"
|
||||||
@@ -235,6 +238,16 @@ kubectl get pods --all-namespaces \
|
|||||||
| grep OOMKilled
|
| grep OOMKilled
|
||||||
```
|
```
|
||||||
|
|
||||||
|
On cluster node
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo dmesg -T | grep -i kill
|
||||||
|
sudo dmesg -T | grep -Ei "oom|kill"
|
||||||
|
sudo journalctl -k | grep -Ei "oom|kill"
|
||||||
|
sudo journalctl -k --since "1 hour ago" | grep -Ei "oom|kill"
|
||||||
|
sudo journalctl -k -o short-iso | grep -Ei "oom|kill"
|
||||||
|
```
|
||||||
|
|
||||||
### Attach to an pod
|
### Attach to an pod
|
||||||
|
|
||||||
Attach connects your terminal to the main process of the container (PID 1), or another running process if specified.
|
Attach connects your terminal to the main process of the container (PID 1), or another running process if specified.
|
||||||
@@ -263,6 +276,20 @@ POD_NAME=$(kubectl get pod -l app=$MY_APP_NAME -n $NAMESPACE -o jsonpath='{.item
|
|||||||
kubectl exec -n $NAMESPACE -it ${POD_NAME} -- sh
|
kubectl exec -n $NAMESPACE -it ${POD_NAME} -- sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Container TTY
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
...
|
||||||
|
command: ["bash", "-c"]
|
||||||
|
tty: true
|
||||||
|
args:
|
||||||
|
- |
|
||||||
|
while true; do
|
||||||
|
sleep 100
|
||||||
|
done
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
# bash
|
# bash
|
||||||
POD_NAME=$(kubectl get pod -l app=myAppName -n appNamespace -o jsonpath='{.items[0].metadata.name}')
|
POD_NAME=$(kubectl get pod -l app=myAppName -n appNamespace -o jsonpath='{.items[0].metadata.name}')
|
||||||
@@ -320,6 +347,39 @@ kubectl patch pv $PV_NAME \
|
|||||||
-p '{"metadata":{"finalizers": null}}'
|
-p '{"metadata":{"finalizers": null}}'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### check orphans
|
||||||
|
|
||||||
|
**Execute on host:**
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
#/bin/bash
|
||||||
|
STORAGE_DIR="/var/lib/rancher/k3s/storage"
|
||||||
|
# clean if already been used
|
||||||
|
unset PV_PATHS
|
||||||
|
declare -A PV_PATHS
|
||||||
|
ORPHANS=()
|
||||||
|
|
||||||
|
for name in $(kubectl get pv -o jsonpath='{.items[*].metadata.name}'); do
|
||||||
|
path=$(kubectl get pv ${name} -o jsonpath='{.spec.local.path}' 2>/dev/null)
|
||||||
|
# check if path is no empty
|
||||||
|
[[ -n "${path}" ]] && PV_PATHS["${path}"]="1"
|
||||||
|
done
|
||||||
|
|
||||||
|
for dir in "$STORAGE_DIR"/*; do
|
||||||
|
[ -d "$dir" ] || continue
|
||||||
|
if [[ -z "${PV_PATHS[$dir]}" ]]; then
|
||||||
|
ORPHANS+=("$dir")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ ${#ORPHANS[@]} -eq 0 ]]; then
|
||||||
|
echo "No orphans found."
|
||||||
|
else
|
||||||
|
echo "orphans:"
|
||||||
|
printf "%s\n" "${ORPHANS[@]}"
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
||||||
### persistent volume claims
|
### persistent volume claims
|
||||||
|
|
||||||
``` yaml
|
``` yaml
|
||||||
@@ -832,6 +892,17 @@ crictl rmi --prune
|
|||||||
sudo ctr --address /run/k3s/containerd/containerd.sock images prune --all
|
sudo ctr --address /run/k3s/containerd/containerd.sock images prune --all
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### kill all
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
k3s-killall.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
If k3s using mount. Force kill by mount
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kill -9 $(lsof +f -- /mount | awk 'NR>1 {print $2}')
|
||||||
|
```
|
||||||
|
|
||||||
### Prune ephemeral containerd data
|
### Prune ephemeral containerd data
|
||||||
|
|
||||||
|
|||||||
@@ -80,6 +80,24 @@ spec:
|
|||||||
|
|
||||||
**Disable:**
|
**Disable:**
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
FLUX_RESOURCE_NAME="???"
|
||||||
|
FLUX_RESOURCE_NS="???"
|
||||||
|
kubectl patch kustomization ${FLUX_RESOURCE_NAME} -n ${FLUX_RESOURCE_NS} --type merge -p '{"spec":{"prune":false}}'
|
||||||
|
```
|
||||||
|
|
||||||
|
**Enable:**
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
FLUX_RESOURCE_NAME="???"
|
||||||
|
FLUX_RESOURCE_NS="???"
|
||||||
|
kubectl patch kustomization ${FLUX_RESOURCE_NAME} -n ${FLUX_RESOURCE_NS} --type merge -p '{"spec":{"prune":true}}'
|
||||||
|
```
|
||||||
|
|
||||||
|
## kustomization helm release
|
||||||
|
|
||||||
|
**Disable:**
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
FLUX_RESOURCE_NAME="???"
|
FLUX_RESOURCE_NAME="???"
|
||||||
FLUX_RESOURCE_NS="???"
|
FLUX_RESOURCE_NS="???"
|
||||||
@@ -93,3 +111,21 @@ FLUX_RESOURCE_NAME="???"
|
|||||||
FLUX_RESOURCE_NS="???"
|
FLUX_RESOURCE_NS="???"
|
||||||
kubectl patch helmrelease ${FLUX_RESOURCE_NAME} -n ${FLUX_RESOURCE_NS} --type merge -p '{"spec":{"prune":true}}'
|
kubectl patch helmrelease ${FLUX_RESOURCE_NAME} -n ${FLUX_RESOURCE_NS} --type merge -p '{"spec":{"prune":true}}'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Reconcile
|
||||||
|
|
||||||
|
**Source git:**
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
FLUX_RESOURCE_NAME="???"
|
||||||
|
FLUX_RESOURCE_NS="???"
|
||||||
|
flux reconcile source git ${FLUX_RESOURCE_NAME} -n ${FLUX_RESOURCE_NS}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Kustomization:**
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
FLUX_RESOURCE_NAME="???"
|
||||||
|
FLUX_RESOURCE_NS="???"
|
||||||
|
flux reconcile kustomization ${FLUX_RESOURCE_NAME} -n ${FLUX_RESOURCE_NS}
|
||||||
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user