Minikube Systemd: Difference between revisions

From Chorke Wiki
Jump to navigation Jump to search
 
(34 intermediate revisions by the same user not shown)
Line 14: Line 14:
lxc launch ubuntu:22.04 minikube --vm
lxc launch ubuntu:22.04 minikube --vm
lxc snapshot minikube ubuntu:22.04
lxc snapshot minikube ubuntu:22.04
lxc restore  minikube ubuntu:22.04


cat << EXE | lxc exec minikube -- bash
cat << EXE | lxc exec minikube -- bash
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}
  useradd --create-home --shell /bin/bash \${LXC_USER_NAME}
    passwd --quiet --delete "\${LXC_USER_NAME}"
  passwd --quiet --delete "\${LXC_USER_NAME}"
    usermod -aG sudo "\${LXC_USER_NAME}"
  usermod -aG sudo "\${LXC_USER_NAME}"
fi
fi
EXE
EXE
Line 29: Line 30:
| valign="top" colspan="2" |
| valign="top" colspan="2" |
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
cat << EXE | lxc exec minikube -- sudo --login --user ${USER} bash
cat << EXE | lxc exec minikube -- sudo -i -u ${USER} bash
sudo apt-get update -qq
sudo apt-get update -qq
sudo mkdir -p /etc/apt/keyrings
sudo mkdir -p /etc/apt/keyrings
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg\
curl -fsSL https://download.docker.com/linux/ubuntu/gpg\
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Line 49: Line 51:
|-
|-
| valign="top" |
| 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
EXE
</syntaxhighlight>
|-
| colspan="3" |
----
|-
| valign="top" |
<syntaxhighlight lang="bash">
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
</syntaxhighlight>
| valign="top" colspan="2" |
<syntaxhighlight lang="bash">
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
</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


|-
| colspan="3" |
----
|-
| valign="top" |
| valign="top" |
lxc delete  minikube/ubuntu:docker:22.04
lxc snapshot minikube ubuntu:docker:22.04


| valign="top" |
| valign="top" |
lxc restore  minikube ubuntu:docker:22.04
lxc info    minikube
| valign="top" |
lxc exec minikube -- sudo -i -u ${USER} docker ps
lxc exec minikube -- sudo -i -u ${USER} jq --help


|}
|}
==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 75: 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"|
|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"|
<syntaxhighlight lang="bash">
cat <<'EXE' | ssh [email protected]
for d in system network volume
do docker ${d} prune -f;done
EXE
</syntaxhighlight>


|}
|}
Line 84: 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 MetalLB|Minikube » MetalLB]]
* [[Minikube Registry|Minikube » Registry]]
* [[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]]
* [[Minikube]]
* [[Kubectl]]
* [[Kubectl]]
* [[Docker]]
* [[Docker]]
Line 97: Line 379:


| valign="top" |
| valign="top" |
* [[Minikube Ingress DNS]]
* [[CIDR]]
| valign="top" |
|-
| colspan="3" |
----
|-
| valign="top" |
* [https://stackoverflow.com/questions/63559779/ Minikube » Local FS As Persistent Volume]
* [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://minikube.sigs.k8s.io/docs/tutorials/local_path_provisioner/ Minikube » Local Path Provisioner]
* [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]]
| valign="top" |
* [[CIDR]]
* [[UFW]]


| valign="top" |
| valign="top" |


|}
|}

Latest revision as of 22:58, 18 December 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