Minikube Systemd: Difference between revisions
Jump to navigation
Jump to search
(27 intermediate revisions by the same user not shown) | |||
Line 19: | Line 19: | ||
LXC_USER_NAME="${USER}" | LXC_USER_NAME="${USER}" | ||
if ! sudo id -u \${LXC_USER_NAME} &>/dev/null;then | if ! sudo id -u \${LXC_USER_NAME} &>/dev/null;then | ||
useradd --create-home --shell /bin/bash \${LXC_USER_NAME} | |||
passwd --quiet --delete "\${LXC_USER_NAME}" | |||
usermod -aG sudo "\${LXC_USER_NAME}" | |||
fi | fi | ||
EXE | EXE | ||
Line 42: | Line 42: | ||
signed-by=/etc/apt/keyrings/docker.gpg]\ | signed-by=/etc/apt/keyrings/docker.gpg]\ | ||
https://download.docker.com/linux/ubuntu \$(lsb_release -cs) stable | https://download.docker.com/linux/ubuntu \$(lsb_release -cs) stable | ||
SRC | |||
EXE | |||
</syntaxhighlight> | |||
|- | |||
| colspan="3" | | |||
---- | |||
|- | |||
| valign="top" | | |||
<syntaxhighlight lang="bash"> | |||
cat << EXE | lxc exec minikube -- sudo -i -u ${USER} bash | |||
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key\ | |||
| sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg | |||
EXE | |||
lxc exec minikube -- apt-get update -qq | |||
lxc exec minikube -- apt-get install -y kubectl | |||
lxc exec minikube -- which kubectl | |||
</syntaxhighlight> | |||
| valign="top" colspan="2" | | |||
<syntaxhighlight lang="bash"> | |||
cat << EXE | lxc exec minikube -- sudo -i -u ${USER} bash | |||
cat << SRC | sudo tee /etc/apt/sources.list.d/kubernetes.list >/dev/null | |||
deb [arch=$(dpkg --print-architecture)\ | |||
signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg]\ | |||
https://pkgs.k8s.io/core:/stable:/v1.30/deb/ / | |||
SRC | SRC | ||
EXE | EXE | ||
Line 71: | Line 97: | ||
EXE | EXE | ||
</syntaxhighlight> | </syntaxhighlight> | ||
|- | |||
| colspan="3" | | |||
---- | |||
|- | |||
| valign="top" | | |||
lxc stop minikube | |||
lxc info minikube | |||
lxc list | |||
| valign="top" | | |||
lxc config set minikube limits.cpu 4 | |||
lxc config get minikube limits.cpu | |||
lxc config unset minikube limits.cpu | |||
| valign="top" | | |||
lxc config set minikube limits.memory 8GB | |||
lxc config get minikube limits.memory | |||
lxc config unset minikube limits.memory | |||
|- | |||
| colspan="3" | | |||
---- | |||
|- | |||
| valign="top" | | |||
lxc start minikube | |||
lxc info minikube | |||
lxc config show minikube | |||
| valign="top" colspan="2" | | |||
lxc exec minikube -- awk '/^MemTotal:/ { print int($2/1024); }' /proc/meminfo | |||
lxc exec minikube -- getconf _NPROCESSORS_ONLN | |||
lxc exec minikube -- free -th | |||
|- | |- | ||
Line 89: | Line 148: | ||
|} | |} | ||
==Execute Debug== | |||
{| | |||
| valign="top" colspan="2"| | |||
<syntaxhighlight lang="bash"> | |||
cat << EXE | lxc exec minikube -- sudo -i -u ${USER} bash | |||
if [ -x "$(command -v curl)" ];then \ | |||
sudo apt-get -qq update;\ | |||
export MINIKUBE_CPU_USE=2;\ | |||
export MINIKUBE_RAM_USE=5900;\ | |||
bash <(curl -s 'https://cdn.chorke.org/exec/cli/bash/install/minikube/1.0.0-ubuntu-22.04.sh.txt');\ | |||
else printf 'curl \033[0;31mnot found! \033[0m:(\n';fi | |||
EXE | |||
</syntaxhighlight> | |||
| valign="top" | | |||
lxc exec minikube -- sudo -i -u minikube minikube status | |||
lxc exec minikube -- journalctl -xeu minikube.service | |||
lxc exec minikube -- systemctl daemon-reload | |||
lxc exec minikube -- systemctl stop minikube.service | |||
lxc exec minikube -- systemctl status minikube.service | |||
lxc exec minikube -- systemctl restart minikube.service | |||
|- | |||
| colspan="3" | | |||
---- | |||
|- | |||
| valign="top" colspan="3" | | |||
lxc exec minikube -- sudo -i -u minikube kubectl get ingress kubernetes-dashboard -n kubernetes-dashboard -o yaml | |||
lxc exec minikube -- sudo -i -u minikube kubectl get configmap coredns -n kube-system -o yaml | |||
lxc exec minikube -- sudo -i -u minikube minikube addons list | |||
|} | |||
==Ingress Debug== | |||
{| | |||
| valign="top" colspan="2"| | |||
<syntaxhighlight lang="bash"> | |||
cat << EXE | lxc exec minikube -- sudo -i -u ${USER} bash | |||
printf -v MINIKUBE_NSLOOKUP '%s' \$(sudo -u minikube minikube ip) | |||
if [ -f '/etc/resolv.conf' ]&&[ "\$(grep -c \${MINIKUBE_NSLOOKUP} '/etc/resolv.conf')" == 0 ];then | |||
cat << CFG | sudo tee -a /etc/resolv.conf >/dev/null | |||
# minikube name server | |||
nameserver \${MINIKUBE_NSLOOKUP} | |||
CFG | |||
fi | |||
EXE | |||
</syntaxhighlight> | |||
| valign="top" | | |||
lxc exec minikube -- nslookup www.k8s.local | |||
lxc exec minikube -- dig www.k8s.local | |||
lxc exec minikube -- cat /etc/resolv.conf | |||
lxc exec minikube -- cat /etc/hosts | |||
lxc exec minikube -- curl www.k8s.local | |||
lxc exec minikube -- ping www.k8s.local | |||
|} | |||
==Config Debug== | |||
{| | |||
| valign="top"| | |||
<syntaxhighlight lang="bash"> | |||
cat << EXE | lxc exec minikube -- sudo -i -u ${USER} bash | |||
mkdir -p ~/.kube && sudo chmod 755 ~/.kube | |||
sudo -i -u minikube kubectl config --kubeconfig=/home/minikube/.kube/config view --flatten | tee ~/.kube/config >/dev/null | |||
sudo chmod 600 ~/.kube/config | |||
EXE | |||
lxc exec minikube -- sudo -i -u ${USER} kubectl get all -A | |||
</syntaxhighlight> | |||
|- | |||
| valign="top"| | |||
---- | |||
|- | |||
| valign="top"| | |||
<syntaxhighlight lang="bash"> | |||
cat << EXE | lxc exec minikube -- sudo -i -u ${USER} bash | |||
sudo mkdir -p /root/.kube && sudo chmod 755 /root/.kube | |||
sudo -i -u minikube kubectl config --kubeconfig=/home/minikube/.kube/config view --flatten | sudo tee /root/.kube/config >/dev/null | |||
sudo chmod 600 /root/.kube/config | |||
EXE | |||
lxc exec minikube -- kubectl get all -A | |||
</syntaxhighlight> | |||
|} | |||
==Systemd== | |||
'''Line number: 20-21, 23 meaningless''', kept backed those lines for identical purpose | |||
<syntaxhighlight lang="bash" highlight="20-21,23" line> | |||
cat /etc/systemd/system/minikube.service | |||
:' | |||
[Unit] | |||
Description=Minikube Cluster | |||
Documentation=https://minikube.sigs.k8s.io/docs/ | |||
After=network-online.target containerd.service docker.service | |||
Requires=network-online.target containerd.service docker.service | |||
Wants=network-online.target docker.service | |||
AssertFileIsExecutable=/var/minikube/bin/minikube | |||
[Service] | |||
Type=forking | |||
User=minikube | |||
Group=minikube | |||
RemainAfterExit=yes | |||
ProtectProc=invisible | |||
StandardOutput=journal | |||
WorkingDirectory=/home/minikube | |||
EnvironmentFile=-/etc/default/minikube | |||
ExecStartPre=/bin/bash -c "if [ -z \"${MINIKUBE_OPTS}\" ]; then echo \"Variable MINIKUBE_OPTS not set in /etc/default/minikube\"; errors_exit; fi" | |||
ExecStart=/var/minikube/bin/minikube start --cpus=8 --memory=19611 --addons=ingress,ingress-dns,dashboard,metrics-server --mount=true --mount-string=/var/minikube/pvc/:/var/hostpath-provisioner/ | |||
ExecStartPost=/bin/bash -c "echo ${MAINPID} > /var/minikube/etc/minikube.pid" | |||
ExecStop=/var/minikube/bin/minikube stop | |||
Restart=always | |||
SendSIGKILL=no | |||
TasksMax=infinity | |||
TimeoutStopSec=infinity | |||
[Install] | |||
WantedBy=multi-user.target | |||
' | |||
</syntaxhighlight> | |||
==Playground== | ==Playground== | ||
Line 109: | Line 301: | ||
|- | |- | ||
|valign="top"| | |valign="top"| | ||
<syntaxhighlight lang="bash"> | |||
SYSTEM_RAM_LIMIT=$(awk '/^MemTotal:/ { print int($2/1024); }' /proc/meminfo) | |||
SYSTEM_CPU_LIMIT=$(getconf _NPROCESSORS_ONLN) | |||
minikube config view | |||
minikube config | |||
</syntaxhighlight> | |||
|valign="top" colspan="2"| | |||
<syntaxhighlight lang="bash"> | |||
minikube config set memory $((${SYSTEM_RAM_LIMIT}-1024*4)) | |||
minikube config set cpus $((${SYSTEM_CPU_LIMIT}-4)) | |||
minikube delete | |||
minikube start | |||
</syntaxhighlight> | |||
|- | |||
|colspan="3"| | |||
---- | |||
|- | |||
|valign="top"| | |||
<syntaxhighlight lang="bash"> | |||
docker network prune -f | |||
docker volume prune -f | |||
docker system prune -f | |||
docker image ls | |||
</syntaxhighlight> | |||
|valign="top"| | |valign="top"| | ||
<syntaxhighlight lang="bash"> | |||
cat <<'EXE' | bash | |||
for d in system network volume | |||
do docker ${d} prune -f;done | |||
EXE | |||
</syntaxhighlight> | |||
|valign="top"| | |valign="top"| | ||
<syntaxhighlight lang="bash"> | |||
cat <<'EXE' | ssh [email protected] | |||
for d in system network volume | |||
do docker ${d} prune -f;done | |||
EXE | |||
</syntaxhighlight> | |||
|} | |} | ||
Line 118: | Line 348: | ||
==References== | ==References== | ||
{| | {| | ||
| valign="top" | | |||
* [https://stackoverflow.com/questions/63559779/ Minikube » Local FS As Persistent Volume] | |||
* [https://stackoverflow.com/questions/48534980/ Minikube » Mount Host directory into Pod] | |||
* [https://minikube.sigs.k8s.io/docs/tutorials/local_path_provisioner/ Minikube » Local Path Provisioner] | |||
* [[Minikube Ingress DNS| Minikube » Ingress DNS]] | |||
* [[Minikube Tunnel|Minikube » Tunnel]] | |||
* [[Minikube]] | |||
| valign="top" | | |||
| valign="top" | | |||
|- | |||
| colspan="3" | | |||
---- | |||
|- | |||
| valign="top" | | | valign="top" | | ||
* [[Docker on Windows]] | * [[Docker on Windows]] | ||
* [[Linux Containers]] | * [[Linux Containers]] | ||
* [[Docker Compose]] | * [[Docker Compose]] | ||
* [[Free Up RAM]] | |||
* [[Kubernetes]] | * [[Kubernetes]] | ||
* [[Kubectl]] | * [[Kubectl]] | ||
* [[Docker]] | * [[Docker]] | ||
Line 131: | Line 377: | ||
| valign="top" | | | valign="top" | | ||
* [https://stackoverflow.com/questions/6481005/ Bash » Get the number of CPUs in Linux] | * [https://stackoverflow.com/questions/6481005/ Bash » Get the number of CPUs in Linux] | ||
* [https://medium.com/@abdulfayis/storage-orchestration-for-kubernetes-c6370f943e23 K8s » Storage » Orchestration] | * [https://medium.com/@abdulfayis/storage-orchestration-for-kubernetes-c6370f943e23 K8s » Storage » Orchestration] | ||
* [https://unix.stackexchange.com/questions/415519/ Bash » Available memory] | * [https://unix.stackexchange.com/questions/415519/ Bash » Available memory] | ||
* [https://kubernetes.io/docs/concepts/storage/volumes/#hostpath K8s » Volume » HostPath] | * [https://kubernetes.io/docs/concepts/storage/volumes/#hostpath K8s » Volume » HostPath] | ||
* [https://kubernetes.io/docs/concepts/storage/volumes/#local K8s » Volume » Local] | * [https://kubernetes.io/docs/concepts/storage/volumes/#local K8s » Volume » Local] | ||
* [[Swap Space]] | |||
* [[CIDR]] | |||
* [[UFW]] | |||
| valign="top" | | | valign="top" | | ||
|} | |} |
Latest revision as of 21:58, 5 October 2024
if [ -x "$(command -v curl)" ];then \
sudo apt -qq update;\
export MINIKUBE_CPU_USE=8;\
export MINIKUBE_RAM_USE=16384;\
bash <(curl -s 'https://cdn.chorke.org/exec/cli/bash/install/minikube/1.0.0-ubuntu-22.04.sh.txt');\
else printf 'curl \033[0;31mnot found! \033[0m:(\n';fi
Prepare Debug
lxc launch ubuntu:22.04 minikube --vm
lxc snapshot minikube ubuntu:22.04
lxc restore minikube ubuntu:22.04
cat << EXE | lxc exec minikube -- bash
LXC_USER_NAME="${USER}"
if ! sudo id -u \${LXC_USER_NAME} &>/dev/null;then
useradd --create-home --shell /bin/bash \${LXC_USER_NAME}
passwd --quiet --delete "\${LXC_USER_NAME}"
usermod -aG sudo "\${LXC_USER_NAME}"
fi
EXE
lxc exec minikube -- sudo --login --user ${USER} bash
lxc exec minikube -- sudo -i -u ${USER} bash
|
cat << EXE | lxc exec minikube -- sudo -i -u ${USER} bash
sudo apt-get update -qq
sudo mkdir -p /etc/apt/keyrings
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg\
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
cat << SRC | sudo tee /etc/apt/sources.list.d/docker.list >/dev/null
deb [arch=\$(dpkg --print-architecture)\
signed-by=/etc/apt/keyrings/docker.gpg]\
https://download.docker.com/linux/ubuntu \$(lsb_release -cs) stable
SRC
EXE
| |
| ||
cat << EXE | lxc exec minikube -- sudo -i -u ${USER} bash
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key\
| sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
EXE
lxc exec minikube -- apt-get update -qq
lxc exec minikube -- apt-get install -y kubectl
lxc exec minikube -- which kubectl
|
cat << EXE | lxc exec minikube -- sudo -i -u ${USER} bash
cat << SRC | sudo tee /etc/apt/sources.list.d/kubernetes.list >/dev/null
deb [arch=$(dpkg --print-architecture)\
signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg]\
https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /
SRC
EXE
| |
| ||
cat << EXE | lxc exec minikube -- sudo -i -u ${USER} bash
sudo apt-get update -qq
sudo apt-get install -y docker-ce jq
sudo usermod -aG docker \${USER}
su - \${USER}
id -nG
EXE
|
cat << EXE | lxc exec minikube -- sudo -i -u ${USER} bash
sudo systemctl status network-online.target
sudo systemctl status containerd.service
sudo systemctl status docker.service
docker version
docker ps -a
EXE
| |
| ||
lxc stop minikube lxc info minikube lxc list |
lxc config set minikube limits.cpu 4 lxc config get minikube limits.cpu lxc config unset minikube limits.cpu |
lxc config set minikube limits.memory 8GB lxc config get minikube limits.memory lxc config unset minikube limits.memory |
| ||
lxc start minikube lxc info minikube lxc config show minikube |
lxc exec minikube -- awk '/^MemTotal:/ { print int($2/1024); }' /proc/meminfo lxc exec minikube -- getconf _NPROCESSORS_ONLN lxc exec minikube -- free -th | |
| ||
lxc delete minikube/ubuntu:docker:22.04 lxc snapshot minikube ubuntu:docker:22.04 |
lxc restore minikube ubuntu:docker:22.04 lxc info minikube |
lxc exec minikube -- sudo -i -u ${USER} docker ps lxc exec minikube -- sudo -i -u ${USER} jq --help |
Execute Debug
cat << EXE | lxc exec minikube -- sudo -i -u ${USER} bash
if [ -x "$(command -v curl)" ];then \
sudo apt-get -qq update;\
export MINIKUBE_CPU_USE=2;\
export MINIKUBE_RAM_USE=5900;\
bash <(curl -s 'https://cdn.chorke.org/exec/cli/bash/install/minikube/1.0.0-ubuntu-22.04.sh.txt');\
else printf 'curl \033[0;31mnot found! \033[0m:(\n';fi
EXE
|
lxc exec minikube -- sudo -i -u minikube minikube status lxc exec minikube -- journalctl -xeu minikube.service lxc exec minikube -- systemctl daemon-reload lxc exec minikube -- systemctl stop minikube.service lxc exec minikube -- systemctl status minikube.service lxc exec minikube -- systemctl restart minikube.service | |
| ||
lxc exec minikube -- sudo -i -u minikube kubectl get ingress kubernetes-dashboard -n kubernetes-dashboard -o yaml lxc exec minikube -- sudo -i -u minikube kubectl get configmap coredns -n kube-system -o yaml lxc exec minikube -- sudo -i -u minikube minikube addons list |
Ingress Debug
cat << EXE | lxc exec minikube -- sudo -i -u ${USER} bash
printf -v MINIKUBE_NSLOOKUP '%s' \$(sudo -u minikube minikube ip)
if [ -f '/etc/resolv.conf' ]&&[ "\$(grep -c \${MINIKUBE_NSLOOKUP} '/etc/resolv.conf')" == 0 ];then
cat << CFG | sudo tee -a /etc/resolv.conf >/dev/null
# minikube name server
nameserver \${MINIKUBE_NSLOOKUP}
CFG
fi
EXE
|
lxc exec minikube -- nslookup www.k8s.local lxc exec minikube -- dig www.k8s.local lxc exec minikube -- cat /etc/resolv.conf lxc exec minikube -- cat /etc/hosts lxc exec minikube -- curl www.k8s.local lxc exec minikube -- ping www.k8s.local |
Config Debug
cat << EXE | lxc exec minikube -- sudo -i -u ${USER} bash
mkdir -p ~/.kube && sudo chmod 755 ~/.kube
sudo -i -u minikube kubectl config --kubeconfig=/home/minikube/.kube/config view --flatten | tee ~/.kube/config >/dev/null
sudo chmod 600 ~/.kube/config
EXE
lxc exec minikube -- sudo -i -u ${USER} kubectl get all -A
|
|
cat << EXE | lxc exec minikube -- sudo -i -u ${USER} bash
sudo mkdir -p /root/.kube && sudo chmod 755 /root/.kube
sudo -i -u minikube kubectl config --kubeconfig=/home/minikube/.kube/config view --flatten | sudo tee /root/.kube/config >/dev/null
sudo chmod 600 /root/.kube/config
EXE
lxc exec minikube -- kubectl get all -A
|
Systemd
Line number: 20-21, 23 meaningless, kept backed those lines for identical purpose
cat /etc/systemd/system/minikube.service
:'
[Unit]
Description=Minikube Cluster
Documentation=https://minikube.sigs.k8s.io/docs/
After=network-online.target containerd.service docker.service
Requires=network-online.target containerd.service docker.service
Wants=network-online.target docker.service
AssertFileIsExecutable=/var/minikube/bin/minikube
[Service]
Type=forking
User=minikube
Group=minikube
RemainAfterExit=yes
ProtectProc=invisible
StandardOutput=journal
WorkingDirectory=/home/minikube
EnvironmentFile=-/etc/default/minikube
ExecStartPre=/bin/bash -c "if [ -z \"${MINIKUBE_OPTS}\" ]; then echo \"Variable MINIKUBE_OPTS not set in /etc/default/minikube\"; errors_exit; fi"
ExecStart=/var/minikube/bin/minikube start --cpus=8 --memory=19611 --addons=ingress,ingress-dns,dashboard,metrics-server --mount=true --mount-string=/var/minikube/pvc/:/var/hostpath-provisioner/
ExecStartPost=/bin/bash -c "echo ${MAINPID} > /var/minikube/etc/minikube.pid"
ExecStop=/var/minikube/bin/minikube stop
Restart=always
SendSIGKILL=no
TasksMax=infinity
TimeoutStopSec=infinity
[Install]
WantedBy=multi-user.target
'
Playground
lxc launch ubuntu:22.04 minikube --vm lxc exec minikube -- bash |
lxc snapshot minikube ubuntu:docker:22.04 lxc restore minikube ubuntu:docker:22.04 |
lxc delete minikube/ubuntu:docker:22.04 lxc info minikube |
| ||
SYSTEM_RAM_LIMIT=$(awk '/^MemTotal:/ { print int($2/1024); }' /proc/meminfo)
SYSTEM_CPU_LIMIT=$(getconf _NPROCESSORS_ONLN)
minikube config view
minikube config
|
minikube config set memory $((${SYSTEM_RAM_LIMIT}-1024*4))
minikube config set cpus $((${SYSTEM_CPU_LIMIT}-4))
minikube delete
minikube start
| |
| ||
docker network prune -f
docker volume prune -f
docker system prune -f
docker image ls
|
cat <<'EXE' | bash
for d in system network volume
do docker ${d} prune -f;done
EXE
|
cat <<'EXE' | ssh [email protected]
for d in system network volume
do docker ${d} prune -f;done
EXE
|
References
| ||