Kubernetes ์ค์น
์ค์น์์ด ์ฟ ๋ฒ๋คํฐ์ค ์ค์ต
- ์นดํ์ฝ๋ค ์ฟ ๋ฒ๋คํฐ์ค ํ๋ ์ด๊ทธ๋ผ์ด๋
- https://www.katacoda.com/courses/kubernetes/playground
- Master, node1์ด ๊ตฌ์ฑ๋์ด ์์ด ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
์ปดํฌ๋ํธ ๊ตฌ์ฑ
์ค์น
- Play with Kubernetes
- https://labs.play-with-k8s.com/
- docker ์์ ์ ๊ณต. docker hub ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ
- 4์๊ฐ ์ฌ์ฉ ๊ฐ๋ฅ. Master, worker Node๋ฅผ ์ง์ ๊ตฌ์ฑํ ํ ์ฌ์ฉ ๊ฐ๋ฅ
์ปดํฌ๋ํธ ๊ตฌ์ฑ
์ค์น
๋ง์คํฐ ์์คํ ์ผ๋ก ๋ ธ๋1์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ด๊ธฐํ์์ ์ด ์งํ๋๋ค.
[node1 ~]$ kubeadm init --apiserver-advertise-address $(hostname -i) --pod-network-cidr 10.5.0.0/16
๋คํธ์ํธ๋ฅผ ์ด๊ธฐํ ํด์ค๋ค. (์ปดํจํฐ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ์ง์)
[node1 ~]$ kubectl apply -f https://raw.githubusercontent.com/cloudnativelabs/kube-router/master/daemonset/kubeadm-kuberouter.yaml
worker node ๋ง๋ค๊ธฐ
worker ๋ ธ๋๋ ๋ง์คํฐ์ join ํ๋ฉด์ ํ์ํ ์ปจํฌ๋ํธ ๊ตฌ์ฑ ํ๋ค.
[node2 ~]$ kubeadm join 192.168.0.33:6443 --token gw3faa.v2rsizzudokdtsph \ --discovery-token-ca-cert-hash sha256:3b0f59980ba4e7681cd722d0d791b630bacae7d3003f531c7a2d425de247ab7e
์ค์นํ์ธ
- ํด๋ผ์ฐ๋ ์๋น์ค์์ ์ ๊ณตํ๋ ์ฟ ๋ฒ๋คํฐ์ค ๋๊ตฌ
- ๊ตฌ๊ธ ์ฟ ๋ฒ๋คํฐ์ค ์์ง(GKE)
- ์๋ง์กด ์ฟ ๋ฒ๋คํฐ์ค ์ผ๋์คํฑ ์ปจํ ์ด๋ ์๋น์ค(EKS)
- ์ ์ ์ฟ ๋ฒ๋คํฐ์ค ์๋น์ค(AKS)
๊ฐ์๋จธ์ ์ ์ง์ ์ฟ ๋ฒ๋คํฐ์ค ์ค์น
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ง์ ๊ตฌ์ฑํ๋ ๋๊ตฌ
- kubeadm
- ์ฟ ๋ฒ๋คํฐ์ค์์ ๊ณต์ ์ ๊ณตํ๋ ํด๋ฌ์คํฐ ์์ฑ/๊ด๋ฆฌ ๋๊ตฌ
- kubespray
- ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ๋ฐฐํฌํ๋ ์คํ์์ค ํ๋ก์ ํธ
- ๋ค์ํ ํ์์ผ๋ก ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๊ตฌ์ฑ ๊ฐ๋ฅ
- ์จํ๋ ๋ฏธ์ค์์ ์์ฉ์๋น์ค ํด๋ฌ์คํฐ ์ด์์ ์ ์ฉ
- CNI (Container Network Inferface)
- Container ๊ฐ ํต์ ์ ์ง์ํ๋ VxLAN. Pod Network์ด๋ผ๊ณ ๋ ๋ถ๋ฆ
- ๋ค์ํ ์ข ๋ฅ์ ํ๋ฌ๊ทธ ์ธ์ด ์กด์ฌ
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๊ตฌ์ฑ
- control plane(master node)
- ์์ปค ๋ ธ๋๋ค์ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ ์ ์ด
- single master
- multi master(3,5๊ฐ์ master node)
- worker node
- ๋์ปค ํ๋ซํผ์ ํตํด ์ปจํ ์ด๋๋ฅผ ๋์ํ๋ฉฐ ์ค์ ์๋น์ค ์ ๊ณต
kubeadm ์ ์ด์ฉํ ์ฟ ๋ฒ๋คํฐ์ค ์ค์น (master, node1, node2)
1. ์ค์น ์ ํ๊ฒฝ ์ค์
๊ฐ์ํ๊ฒฝ master, node1, node2 ๋ชจ๋ docker๊ฐ ์ค์น๋์ด ์์ด์ผ ํ๋ฉฐ ์๋ ํ๊ฒฝ์ค์ ์ ๋ชจ๋ ์ ์ฉ ํ๋ค.
- You Must disable swap memory in order for the kubelet to work properly
[node1 ~]$ swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab
- ๋ธ๋ฆฟ์ง ๋คํธ์ํฌ๋ฅผ listen ํ ์ ์๋๋ก ์ง์
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf br_netfilter EOF cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sudo sysctl --system
- ๋ฐฉํ๋ฒฝ disable
$ systemctl stop firewalld $ systemctl disable firewalld
2. kubeadm, kubectl, kubelet ์ค์น
- kubeadm : kubernetes์์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ์ ์ธ ๋๊ตฌ์ด๋ฉฐ, kubernetes ํด๋ฌ์คํฐ๋ฅผ ๊ฐ์ฅ ๋นจ๋ฆฌ ๊ตฌ์ถํ๊ธฐ ์ํ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณต
- Kubectl : ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ ์ดํ๊ธฐ ์ํ ์ปค๋งจ๋ ๋ผ์ธ ๋๊ตฌ
- kubelet : ์ปจํธ๋กค ํ๋ ์ธ์์ ๋ ธ๋์ ์์ ์ ์์ฒญํ๋ ๊ฒฝ์ฐ kubelet์ด ์ด ์์ ์ ์คํ
- kubelet / kubectl start
$ systemctl start kubelet $ systemctl enable kubelet
3. control-plane ๊ตฌ์ฑ
- controller, schduler, etcd, coreDNS ๊ฐ ์ค์น๋๋ค.
$ kubeadm init
- wokder node๋ค์ด ํด๋น token ์ ๊ฐ์ง๊ณ join ํ ์ ์๋๋ก ๋์์ฃผ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์ ์ฅํด ๋๋๋ค.
$ cat > token.txt kubeadm join 192.168.0.33:6443 --token gw3faa.v2rsizzudokdtsph \ --discovery-token-ca-cert-hash sha256:3b0f59980ba4e7681cd722d0d791b630bacae7d3003f531c7a2d425de247ab7e
- root ๊ณ์ ์ธ์ ๋ค๋ฅธ ๊ณ์ ๋ค์ด kubectl ๋ช
๋ น์ด๋ฅผ ์ธ ์ ์๋๋ก ํด ์ฃผ๋ ๋ฐฉ๋ฒ
$ mkdir -p $HOME/.kube $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config $ sudo chown $(id -u):$(id -g) $HOME/.kube/config
- status๊ฐ NotReady์ธ ์ด์ : ์ปจํ
์ด๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ์ค์นํด์ผ ๋๊ธฐ ๋๋ฌธ์ด๋ค. (installing a Pod network add-on)
$ kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')" $ kubectl get nodes
4. work node ๊ตฌ์ฑ
- node1 ๊ณผ node2๋ฅผ master ์ join ์ํจ๋ค.
5.์ค์น ํ์ธ
์ ๋ฆฌํ๊ธฐ
Source
https://www.youtube.com/watch?v=lheclzO-G7k&list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c&index=4&t=4s