kind
Docker
# docker (container)
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl --now enable docker
Install kind
# kind (kubernetes labs)
dnf install golang -y
go install sigs.k8s.io/kind@v0.27.0
echo 'export PATH=$PATH:$HOME/go/bin' >> ~/.bashrc
source ~/.bashrc
# kubectl
VERSION=$(curl -Ls https://dl.k8s.io/release/stable.txt)
curl -LO "https://dl.k8s.io/release/${VERSION}/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
kubectl version --client
Deploy cluster
# create cluster
kind create cluster
dnf install -y bash-completion jq
ETCD_VER=v3.5.12
curl -L https://github.com/etcd-io/etcd/releases/download/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o etcd-${ETCD_VER}-linux-amd64.tar.gz
tar xzvf etcd-${ETCD_VER}-linux-amd64.tar.gz
cd etcd-${ETCD_VER}-linux-amd64
sudo mv etcd etcdctl /usr/local/bin/
etcdctl version
curl -LO https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64
chmod +x yq_linux_amd64 && mv yq_linux_amd64 /usr/local/bin/yq
curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash
mv kustomize /usr/local/bin/
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
VERSION="v1.30.0"
curl -LO https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gz
tar -C /usr/local/bin -xzf crictl-$VERSION-linux-amd64.tar.gz
Spray
Configuration hosts file
echo "192.168.0.200 master
192.168.0.201 worker1
192.168.0.202 worker2" | sudo tee -a /etc/hosts
all:
hosts:
oc-prv-k8s-spray2-m:
ansible_host: 192.168.0.200
oc-prv-k8s-spray2-w1:
ansible_host: 192.168.0.201
oc-prv-k8s-spray2-w2:
ansible_host: 192.168.0.202
children:
kube_control_plane:
hosts:
oc-prv-k8s-spray2-m:
kube_node:
hosts:
oc-prv-k8s-spray2-w1:
oc-prv-k8s-spray2-w2:
etcd:
hosts:
oc-prv-k8s-spray2-m:
k8s_cluster:
children:
kube_control_plane:
kube_node:
Master
ssh-keygen -t rsa -b 4096
ssh-copy-id root@master
ssh-copy-id root@worker1
ssh-copy-id root@worker2
dnf install epel-release -y
dnf install ansible -y
ansible --version
dnf install bash-completion vim wget git python3.11 -y
git clone https://github.com/kubernetes-sigs/kubespray.git
cd ~
python3.11 -m venv venv-py311
source ~/venv-py311/bin/activate
cd kubespray
pip install --upgrade pip setuptools virtualenv
virtualenv venv
pip install -r requirements.txt
ansible --version
Worker
## worker node
dnf install epel-release -y
dnf install -y python3 python3-pip net-tools curl
dnf install -y iptables conntrack
Again master
## 다시 master node
ansible-playbook -i inventory/pla/hosts.yaml -u root --become cluster.yml
mkdir -p ~/.kube
cp /etc/kubernetes/admin.conf ~/.kube/config
export KUBECONFIG=~/.kube/config
echo "source <(kubectl completion bash)" >> ~/.bashrc
echo "export KUBECONFIG=~/.kube/config" >> ~/.bashrc
source ~/.bashrc
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get svc