Kubernetes ์„ค์น˜

์„ค์น˜์—†์ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์‹ค์Šต

  • ์นดํƒ€์ฝ”๋‹ค ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ
    • https://www.katacoda.com/courses/kubernetes/playground
    • Master, node1์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

      ์ปดํฌ๋„ŒํŠธ ๊ตฌ์„ฑ

png

์„ค์น˜

png

  • Play with Kubernetes
    • https://labs.play-with-k8s.com/
    • docker ์—์„œ ์ œ๊ณต. docker hub ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ
    • 4์‹œ๊ฐ„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ. Master, worker Node๋ฅผ ์ง์ ‘๊ตฌ์„ฑํ•œ ํ›„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

      ์ปดํฌ๋„ŒํŠธ ๊ตฌ์„ฑ

png

์„ค์น˜

๋งˆ์Šคํ„ฐ ์‹œ์Šคํ…œ์œผ๋กœ ๋…ธ๋“œ1์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ดˆ๊ธฐํ™”์ž‘์—…์ด ์ง„ํ–‰๋œ๋‹ค.

[node1 ~]$ kubeadm init --apiserver-advertise-address $(hostname -i) --pod-network-cidr 10.5.0.0/16

png

๋„คํŠธ์›ŒํŠธ๋ฅผ ์ดˆ๊ธฐํ™” ํ•ด์ค€๋‹ค. (์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง€์›)

[node1 ~]$ kubectl apply -f https://raw.githubusercontent.com/cloudnativelabs/kube-router/master/daemonset/kubeadm-kuberouter.yaml

png

worker node ๋งŒ๋“ค๊ธฐ

png

worker ๋…ธ๋“œ๋Š” ๋งˆ์Šคํ„ฐ์™€ join ํ•˜๋ฉด์„œ ํ•„์š”ํ•œ ์ปจํฌ๋„ŒํŠธ ๊ตฌ์„ฑ ํ•œ๋‹ค.

[node2 ~]$ kubeadm join 192.168.0.33:6443 --token gw3faa.v2rsizzudokdtsph \ --discovery-token-ca-cert-hash sha256:3b0f59980ba4e7681cd722d0d791b630bacae7d3003f531c7a2d425de247ab7e

png

์„ค์น˜ํ™•์ธ

png

  • ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋„๊ตฌ
    • ๊ตฌ๊ธ€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์—”์ง„(GKE)
    • ์•„๋งˆ์กด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ผ๋ž˜์Šคํ‹ฑ ์ปจํ…Œ์ด๋„ˆ ์„œ๋น„์Šค(EKS)
    • ์• ์ € ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์„œ๋น„์Šค(AKS)

๊ฐ€์ƒ๋จธ์‹ ์— ์ง์ ‘ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์„ค์น˜

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ง์ ‘ ๊ตฌ์„ฑํ•˜๋Š” ๋„๊ตฌ

  • kubeadm
    • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ๊ณต์‹ ์ œ๊ณตํ•˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ ์ƒ์„ฑ/๊ด€๋ฆฌ ๋„๊ตฌ
  • kubespray
    • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ
    • ๋‹ค์–‘ํ•œ ํ˜•์‹์œผ๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ
    • ์˜จํ”„๋ ˆ๋ฏธ์Šค์—์„œ ์ƒ์šฉ์„œ๋น„์Šค ํด๋Ÿฌ์Šคํ„ฐ ์šด์˜์‹œ ์œ ์šฉ
  • CNI (Container Network Inferface)
    • Container ๊ฐ„ ํ†ต์‹ ์„ ์ง€์›ํ•˜๋Š” VxLAN. Pod Network์ด๋ผ๊ณ ๋„ ๋ถ€๋ฆ„
    • ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ํ”Œ๋Ÿฌ๊ทธ ์ธ์ด ์กด์žฌ

png

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ

  • control plane(master node)
    • ์›Œ์ปค ๋…ธ๋“œ๋“ค์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์ œ์–ด
    • single master
    • multi master(3,5๊ฐœ์˜ master node)
  • worker node
    • ๋„์ปค ํ”Œ๋žซํผ์„ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋™์ž‘ํ•˜๋ฉฐ ์‹ค์ œ ์„œ๋น„์Šค ์ œ๊ณต

png

kubeadm ์„ ์ด์šฉํ•œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์„ค์น˜ (master, node1, node2)

png

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์ด ์ด ์ž‘์—…์„ ์‹คํ–‰

png

  • kubelet / kubectl start
    $ systemctl start kubelet
    $ systemctl enable kubelet
    

3. control-plane ๊ตฌ์„ฑ

  • controller, schduler, etcd, coreDNS ๊ฐ€ ์„ค์น˜๋œ๋‹ค.
    $ kubeadm init
    

    png

  • 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
    

    png

png

  • 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 ์‹œํ‚จ๋‹ค.

png

5.์„ค์น˜ ํ™•์ธ

png

์ •๋ฆฌํ•˜๊ธฐ


Source

https://www.youtube.com/watch?v=lheclzO-G7k&list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c&index=4&t=4s