- 카타코다에서 지원하는 playground (Master/node1 로 구성되어있어 바로 사용가능)
https://www.katacoda.com/courses/kubernetes/playground
2023년 현재는 서비스 종료됨
CNI (Container Network Interface)
Container 간 통신을 지원하는 VxLAN. POD Network이라고도 부름
필수적으로 하나는 설치 되어있어야 Container 간 통신 가능
다양한 종류의 플러그인 존재 [ 플라넬(flannel), 칼리코(calico), 위브넷(weavenet) ]
Control plane(Master node)
woker node 상태 관리 및 제어
single master
multi master
Worker node
도커 플랫폼을 통해 컨테이너 동작하며 실제 서비스 제공
- Docker Install to all system
https://docs.docker.com/engine/install/ubuntu/
- Set up the repository
$ sudo apt-get update $ sudo apt-get install -y \ ca-certificates \ curl \ gnupg \ lsb-release
- Add Docker’s official GPG ke
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- Repository 등록
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- Install Docker Engine
-- Repository Cache update $ sudo apt-get update -- docker ce, docker cli, continerd io 설치 $ sudo apt-get install -y docker-ce docker-ce-cli containerd.io
- Docker 설치 확인
sudo systemctl enable docker
sudo systemctl start docker
sudo docker version
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
- 설치전 환경설정
kubeadmin 으로 설치 시 , 모든 노드들은 swap off 되어 있어야 한다.
swapoff -a && sed -i 'swap/s/^/#/' /etc/fstab
- Letting iptables see bridged traffic (bridge 네트워크를 바라 볼 수 있도록 세팅)
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
- port 설정 (방화벽은 disabled 하고 실습. 실제로 앞단에서 방화벽을 다루므로)
-- 방화벽 사용 시, 활성 포트 목록
https://kubernetes.io/docs/reference/ports-and-protocols/
-- 방화벽 disabled 명령어
systemctl stop firewalld
systemctl disable firewalld
kubeadm, kubelet, kubectl 설치
kubeadm
: the command to bootstrap the cluster.
kubelet
: the component that runs on all of the machines in your cluster and does things like starting pods and containers.
kubectl
: the command line util to talk to your cluster.sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curlsudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
- kubectl 명령어 자동완성
BASH
source <(kubectl completion bash)
source <(kubeadm completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
echo "source <(kubeadm completion bash)" >> ~/.bashrc
systemctl start kubelet
systemctl enable kubelet
kubeadm init
: master 에서만 실행. API, controller, schduler, etcd, CoreDNS 구성