320x100
320x100
쿠버네티스 레포지터리 추가
vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://${gg_pkg}/yum-key.gpg https://${gg_pkg}/rpm-package-key.gpg
EOF
SELinux 설정
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
브릿지 네트워크 설정
# 쿠버네티스 서비스 데몬 설정
vim /etc/sysctl.d/k8s.conf
# ipv4와 ipv6에 대해 iptables에서 브리지된 트래픽을 확인하도록 설정
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
# 리눅스 커널에 br_netfilter 모듈 적재 (클라이언트에서 파드가 위치한 노드에 통신하기 위한 브릿지 역할의 모듈)
# 리눅스 기본 모듈로, 쿠버네티스 설치 전에 커널에 로드 필요
modprobe br_netfilter
# 부팅 시 자동으로 모듈을 적재
echo "br_netfilter" > /etc/modules-load.d/br_netfilter.conf
host 명명
vim /etc/hosts
## 아래 내용 추가 (워커_노드_주소 명명할_이름)
192.168.1.xx node-1
## ...
## 중략
DNS 서버 주소 설정
vim /etc/resolv.conf
nameserver 1.1.1.1 #cloudflare DNS
nameserver 8.8.8.8 #Google DNS
도커 및 쿠버네티스 패키지 설치
# Extra Packages for Enterprise Linux 설치
yum install epel-release -y
# docker 설치 및 시스템 데몬 설정
yum install docker -y && systemctl enable --now docker
# kubectl = 쿠버네티스 명령줄 도구
# kubelet = 쿠버네티스 Node agent
# kubeadm = 구성형 쿠버네티스 (쿠버네티스 클러스터 자동 구성 솔루션)
# 쿠버네티스 관련 패키지 설치 및 쿠버네티스 에이전트 데몬 설정
yum install kubectl kubelet kubeadm -y
systemctl enable --now kubelet
쿠버네티스 마스터 노드 초기화
# 쿠버네티스 마스터 노드 초기화
# pod-network-cidr = 쿠버네티스가 컨테이너에 부여하는 네트워크 범위
# apiserver-advertise-address = 워커 노드가 접속하는 API 서버의 IP
kubeadm init --pod-network-cidr=172.16.0.0/16 --apiserver-advertise-address=192.168.1.10
# 쿠버네티스 마스터 노드 초기화 후 아래 부분 반드시 확인
# 워커 노드를 마스터 노드에 연결 시 token과 hash 값을 반드시 입력해야하기 때문
# 해당 토큰은 유효기간이 24시간임
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.1.10:6443 --token fnbiji.5wob1hu12wdtnmyr \
--discovery-token-ca-cert-hash sha256:701d4da5cbf67347595e0653b31a7f6625a130de72ad8881a108093afd06188b
# 토큰에 대해 유효시간 없이 사용하려면 마스터 노드 초가화 시 아래 옵션을 추가
kubeadm init --token 123456.1234567890123456 --token-ttl 0 /
## 중략
kubectl 명령어 사용을 위한 권한 부여
# 현재 사용자 및 그룹에 대해 쿠버네티스 이용권한 부여
# Root 계정이 아닌 다른 사용자 계정에서 kubectl 커맨드 명령어를 사용하여 클러스터를 제어하기 위함
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
: 기본적으로 쿠버네티스에서는 /etc/kubernetes/admin.conf 파일로 kubernetes 관리자 Role의 인증 및 인가 처리
: 위 과정을 통해 사용자 계정의 $HOME/.kube/config 디렉터리에 admin.conf 파일을 복사하여 쉘에 접속한 사용자에게 관리자 권한을 부여
calico 설치
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
: 가상머신 및 컨테이너를 위한 네트워킹, IP 관리, 접근 제어, 모니터링 등 다양한 네트워크 기능을 제공하는 오픈소스 프로젝트
워커 노드 설정
: 마스터 노드와 동일하게 패키지 설치
: 이후 마스터 노드(192.168.1.10)와 연결
kubeadm join 192.168.1.10:6443 --token fnbiji.5wob1hu12wdtnmyr \
--discovery-token-ca-cert-hash sha256:701d4da5cbf67347595e0653b31a7f6625a130de72ad8881a108093afd06188b
마스터 노드에서 워커 노드 연결 확인
kubectl get nodes
파드 내 쿠버네티스 구성요소 확인
kubectl get pods --all-namespeaces
- 파드 (pod)
: 쿠버네티스가 만들 수 있는 가장 작은 오브젝트이며, 기본이 되는 배포 단위
: 하나 이상의 컨테이너를 포함하며, 컨테이너를 개별적으로 배포하기 보다 컨테이너들의 그룹인 파드를 배포
Reference
300x250
728x90
'Container > Kubernetes' 카테고리의 다른 글
쿠버네티스 파드 생성 (0) | 2023.06.04 |
---|---|
쿠버네티스의 구성요소들 (0) | 2023.06.04 |
다양한 쿠버네티스의 종류 (0) | 2023.06.04 |
쿠버네티스를 공부하기 전에 알아야하는 기초지식 (0) | 2023.05.29 |
k3s vs minikube vs micro k8s 비교 (0) | 2023.01.11 |