Kubernetes: Difference between revisions

From Chorke Wiki
Jump to navigation Jump to search
Line 189: Line 189:
  sudo systemctl enable  docker
  sudo systemctl enable  docker


  sudo ifup docker0
  ''sudo ifup docker0''
  sudo ifdown docker0
  ''sudo ifdown docker0''
  sudo apt install netscript
  ''sudo apt install netscript''
  sudo apt install cgroup-tools
  ''sudo apt install cgroup-tools''
  sudo systemctl restart NetworkManager
  sudo systemctl restart NetworkManager
  sudo systemctl restart systemd-resolved
  sudo systemctl restart systemd-resolved

Revision as of 04:39, 21 May 2022

Preferred Kubernetes environments are Minikube, Kind and K3s. It's depends on your use case.

  1. Minikube: Getting started with Fully Kubernetes environment
  2. Kind: Kubernetes environment for clusters and more than a single node
  3. K3s: Kubernetes environment for a low spec machine that uses fewer resources
Nature Minikube Kind K3s
Runtimes VM Container Native
CPU Architectures AMD64 AMD64 AMD64, ARMv7, ARM64
Container Runtimes Docker, CRI-O, containerd, gvisor Docker Docker, containerd
Startup Time 5:19 / 3:15 2:48 / 1:06 0:15 / 0:15
Memory 2GB 8GB (Windows, MacOS) 512 MB
Root Access Required
Multi-Cluster
Multi-Node
Project Home Minikube Kind K3s

Install

Minikube

Get-ComputerInfo OsName,OsVersion,OsBuildNumber
choco install docker-desktop -y
choco install minikube -y

# minikube start --driver=hyperv
# minikube start --driver=none
minikube start

minikube delete
minikube start --v=7
kubectl get nodes

Kind

choco install kubernetes-cli -y
choco install kind -y

# kind create cluster
# kind delete cluster

kind create cluster --name k8s-ns12-pc04
# kind delete cluster --name k8s-ns12-pc04
kubectl cluster-info --context kind-k8s-ns12-pc04
cat <<EOF > kind-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
EOF

K3s

choco install multipass -y
multipass launch -n node1
multipass list

multipass set local.driver=hyperv
multipass set local.driver=virtualbox

Get-NetConnectionProfile
Set-NetConnectionProfile -InterfaceIndex 13 -NetworkCategory Private

multipass list
cat C:\Windows\System32\drivers\etc\hosts.ics

multipass delete --purge --all
multipass exec node1 -- bash -c "curl -sfL https://get.k3s.io | sh -"
multipass exec node1 -- sudo kubectl get nodes

Ubuntu

sudo apt remove docker docker-engine docker.io containerd runc
sudo apt install ca-certificates curl gnupg lsb-release
sudo su
cat << \EOF >> /etc/docker/daemon.json
{
    "exec-opts": [
        "native.cgroupdriver=systemd"
    ],
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "100m"
    },
    "storage-driver": "overlay2"
}
EOF
exit
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
curl    https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat << EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt update && sudo apt install -y apt-transport-https curl
sudo apt install -y docker-ce=5:20.10.16~3-0~ubuntu-focal\
 kubelet=1.24.0-00 kubeadm=1.24.0-00 kubectl=1.24.0-00
sudo apt-mark hold docker-ce kubelet kubeadm kubectl
sudo apt install docker-compose
echo "net.bridge.bridge-nf-call-iptables=1" |\
 sudo tee -a /etc/sysctl.conf
sudo sysctl --system
sudo sysctl -p
sudo kubeadm init --pod-network-cidr=10.21.0.0/16
docker config
sudo usermod -aG docker $USER
newgrp docker

mkdir -p $HOME/.docker
sudo chown $(id -u):$(id -g) $HOME/.docker -R
sudo chmod g+rwx $HOME/.docker -R
kube config
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
network overlay
kubectl apply -f\
 https://docs.projectcalico.org/v3.14/manifests/calico.yaml
join worker nodes
kubeadm token create --print-join-command
kubectl get nodes
evil most things for docker0 bridge
sudo apt remove netscript-2.4
sudo apt purge netscript-2.4
sudo apt autoremove

Knowledge

cat /proc/cgroups
sudo apt install upx-ucl
dpkg --print-architecture
apt-cache madison kubelet
apt-cache madison kubeadm
apt-cache madison kubectl
apt-cache madison docker-ce
journalctl -fu docker
journalctl -u kubelet
sudo rm -rf /root/.kube
rm -rf /home/${USER}/.kube
sudo rm -rf /etc/kubernetes
sudo rm -rf /var/lib/kubelet
sudo rm /etc/containerd/config.toml
sudo systemctl daemon-reload 
systemctl restart containerd
sudo systemctl restart docker
sudo systemctl enable  docker
sudo ifup docker0
sudo ifdown docker0
sudo apt install netscript
sudo apt install cgroup-tools
sudo systemctl restart NetworkManager
sudo systemctl restart systemd-resolved
sudo systemctl daemon-reload
sudo kubeadm reset --ignore-preflight-errors --v=5
sudo apt purge docker-ce kubelet kubeadm kubectl
sudo apt autoremove docker-ce kubelet kubeadm kubectl
sudo apt-mark unhold docker-ce kubelet kubeadm kubectl
choco -v
wsl -l -v
wsl --list --verbose
Restart-Service LxssManager
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V
#Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
apt install -y conntrack
apt install -yqq daemonize dbus-user-session fontconfig
docker --help
docker version

kubectl proxy
kubectl --help
kubectl version

kubectl get nodes
kubectl cluster-info
kubectl cluster-info dump
kubectl cluster-info --context kind-kind

kubectl get all --all-namespaces
kubectl get all --namespace kubernetes-dashboard

kubectl patch node $NODENAME -p '{"metadata":{"finalizers":[]}}' --type=merge
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')

References