목차

Kubernetes cluster deployment guide

🗓️

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

🏷️