Kubernetes
Preferred Kubernetes environments are Minikube, Kind and K3s. It's depends on your use case.
- Minikube: Getting started with Fully Kubernetes environment
- Kind: Kubernetes environment for clusters and more than a single node
- 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
Knowledge
choco -v
wsl -l -v
wsl --list --verbose
Restart-Service LxssManager
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V
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}')