NCP에서 NAS 볼륨 생성
- Service > Storage > NAS > NAS 볼륨 생성
- 서버 모두 ACL 설정에 넣고 생성
NAS 마운트
아래의 명령어 실행(전체 서버)
yum install nfs-utils -y : nfs-utils 설치
mkdir -p /data/share : 마운트할 폴더 생성
mount -t nfs 마운트_정보 /data/share : 마운트
(mount -t nfs -o vers=3 마운트_정보 /data/share : 위 마운트 명령어가 에러날 경우)
영구적인 마운트 설정(전체 서버)
vim /etc/fstab > 기존 내용에 '마운트_정보 /data/share nfs defaults 0 0' 추가
(위에서 vers=3 적용한 경우 : 마운트_정보 /data/share nfs defaults,vers=3 0 0)
df -h : 마운트 정보 확인
개별 서버 디렉토리 생성
mkdir -p /data/k8s-1-001 : 서버1에 실행
mkdir -p /data/k8s-1-002 : 서버2에 실행
mkdir -p /data/k8s-1-003 : 서버3에 실행
도커, Containerd 설치(전체 서버)
- 빌드할 때는 도커가 편하므로 둘 다 설치
도커 설치 준비
yum install -y yum-utils
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
도커, Containerd 설치
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
도커, Containerd 시작 및 활성화
systemctl start docker
systemctl enable docker
systemctl start containerd
systemctl enable containerd
쿠버네티스가 Containerd를 이용할 수 있도록 설정(전체 서버)
Containerd 기본 설정 파일 생성
containerd config default > /etc/containerd/config.toml
설정 파일 수정
vim /etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
BinaryName = ""
...
SystemdCgroup = true # false 에서 true로 변경
Containerd 재시작
systemctl restart containerd
쿠버네티스(kubeadm, kubelet, kubectl) 설치(전체 서버)
kubeadm, kubelet, kubectl 설치 준비
- kubeadm : 클러스터를 부트스트랩하는 명령
- kubelet : 클러스터의 모든 머신에서 실행되는 파드와 컨테이너 시작과 같은 작업을 수행하는 컴포넌트
- kubectl : 클러스터와 통신하기 위한 커맨드 라인 유틸리티
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF
kubeadm, kubelet, kubectl 설치
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
kubeadm, kubelet, kubectl 활성화
systemctl enable --now kubelet
클러스터 구성
- NCP ACG 설정에서 IP : 0.0.0.0/0, 허용 포트 : 6443 추가하여 적용
- 아래 명령어 실행 : 서버1(마스터 서버)에서 실행
kubeadm init --control-plane-endpoint "공인IP:6443" --upload-certs --pod-network-cidr=10.10.0.0/16 -v=5
클러스터 구성 취소
kubeadm reset # y 입력
rm -rf $HOME/.kube
rm -rf /etc/cni/net.d
systemctl restart kubelet
현재 유저를 쿠버네티스 관리자 계정으로 지정
(클러스터 구성 명령어를 실행하면 아래의 내용들이 나온다.)
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
or
export KUBECONFIG=/etc/kubernetes/admin.conf
워커 노드 등록(서버2, 서버3에서 실행)
kubeadm join 공인IP:6443 --token 토큰1 \
--discovery-token-ca-cert-hash sha256:토큰2
노드 확인 명령어
$ kubectl get nodes
$ kubectl get nodes -o wide
$ watch kubectl get nodes -A
칼리코(Container Network Interface 구현체) 설치
- 서버1에서 실행
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.24.1/manifests/tigera-operator.yaml
mkdir /kube
cd /kube
vi calico-resources.yaml > 아래 내용 입력
# This section includes base Calico installation configuration.
# For more information, see: https://projectcalico.docs.tigera.io/master/reference/installation/api#operator.tigera.io/v1.Installation
apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
name: default
spec:
calicoNetwork:
bgp: Disabled
ipPools:
- cidr: 10.10.0.0/16
encapsulation: VXLAN
---
# This section configures the Calico API server.
# For more information, see: https://projectcalico.docs.tigera.io/master/reference/installation/api#operator.tigera.io/v1.APIServer
apiVersion: operator.tigera.io/v1
kind: APIServer
metadata:
name: default
spec: {}
kubectl create -f calico-resources.yaml
systemctl restart containerd : Containerd 재시작(전체 서버에서 실행)
watch kubectl get nodes -A => 잠시 기다리면 전체 노드가 Ready 상태로 변경된다.
kubectl 명령어 자동 완성 기능 활성화(서버1에서 실행)
yum install bash-completion -y
source /usr/share/bash-completion/bash_completion
kubectl completion bash | tee /etc/bash_completion.d/kubectl > /dev/null
echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -o default -F __start_kubectl k' >>~/.bashrc
source /usr/share/bash-completion/bash_completion
Pod 띄우기
kubectl run webserver --image=nginx : 이름이 webserver인 파드 띄우기
kubectl get pods -o wide : 파드의 자세한 정보 확인
(yum install curl -y : curl 명령어 사용 안 되는 경우 설치)
curl IP주소 : 파드의 자세한 정보에서 확인한 IP를 입력, 파드에서 서비스 중인 웹서버 접속 => Welcome to nginx!가 뜬다.
(위 명령어 또는 curl http://IP주소:80)
'프로젝트 & TIL > 일별 공부 기록 (백엔드 스쿨)' 카테고리의 다른 글
71일차 - 쿠버네티스 NodePort, MariaDB, 포트 포워딩 (0) | 2023.06.02 |
---|---|
70일차 - 쿠버네티스 Deployment, 클러스터 IP (0) | 2023.06.01 |
68일차 - 레디스, 쿠버네티스 준비 (0) | 2023.05.30 |
67일차 - @SuperBuilder (0) | 2023.05.26 |
66일차 - 스프링 로그인 된 객체 이용하기 (0) | 2023.05.25 |