티스토리 뷰

1. 서버 생성 후 root 계정으로 처음 접속 후 비밀번호 변경

passwd           # 이후 변경할 비밀 번호를 2번 입력

2. 호스트 이름 확인 및 변경

hostname           # 호스트 이름 확인

hostnamectl set-hostname some_name  # 현재 호스트를 some_name 으로 변경

3. 사용자 계정 생성

adduser kube              # kube 라는 사용자 생성

usermod -aG sudo kube     # kube 사용자가 sudo 명령어를 사용할 수 있도록 등록

4. root 계정 접속 해제 후 kube 사용자로 다시 접속한 후 서버 패키지 업데이트

sudo apt update; sudo apt upgrade -y; sudo apt autoremove -y

5. 방화벽 설정

# iptables 사용 전, ufw 방화벽 끄기
sudo ufw disable

# iptables 방화벽 설정 초기화
sudo iptables -F

# iptables를 안정적으로 사용하기 위한 패키지 설치
sudo apt install iptables-persistent netfilter-persistent

iptables 설정을 변경했다면 netfilter-persistent save 명령어로 저장하고, 나중에 netfilter-persistent reload 명령어로 다시 설정을 불러올 수 있다.

sudo netfilter-persistent save
sudo netfilter-persistent reload

재부팅 후 iptables -S 로 정책이 유지되는지 확인한다. 만일 변경되었거나 설정이 유지되지 않았다면 netfilter-persistent reload 명령으로 다시 방화벽 정책을 불러올 수 있다.

일반적으로 네트워크 트래픽은 양방으로 흘러야 하기 때문에 established and related 접속 허용한다.

# 마스터노드 및 각 워커노드
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT  
sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT

일반적으로 많은 소프트웨어들이 localhost 어댑터와 통신이 되어야 하기 때문에 필요하다.

# 마스터노드 및 각 워커노드
sudo iptables -A INPUT -i lo -j ACCEPT

만약 핑(ping)을 허용하려면 아래 명령을 추가한다.

# 마스터노드 및 각 워커노드
sudo iptables -A INPUT -p icmp -j ACCEPT

ssl/sftp를 이용하기 위한 포트를 허용한다.

# 마스터노드 및 각 워커노드
sudo iptables -I INPUT -p tcp --dport 22 -j ACCEPT

nfs 서버 통신 기능을 이용하려면 다음 포트를 허용한다.

# 마스터노드 및 각 워커노드
sudo iptables -A INPUT -p tcp --dport 111 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 662 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 892 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 2049 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 4045 -j ACCEPT

80포트 및 443 포트 허용한다.

# 마스터노드 및 각 워커노드
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT  
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

마스터 노드에서 다음과 같이 사용할 포트를 허용한다.

# 마스터노드
sudo iptables -A INPUT -p tcp --dport 6443 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 2379:2380 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 10250 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 10251 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 10252 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 30000:32767 -j ACCEPT

각각의 워커 노드에서 다음과 같이 사용할 포트를 허용한다.

# 각 워커노드
sudo iptables -A INPUT -p tcp --dport 10250 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 30000:32767 -j ACCEPT

설정을 저장한다.

# 마스터노드 및 각 워커노드
sudo netfilter-persistent save

6. 마스터 노드 k3s 설치

# 마스터노드
sudo apt update
sudo apt install -y docker.io nfs-common dnsutils curl

# 내장 traefik ingress-contraller 설치하는 경우
curl -sfL https://get.k3s.io | sh -s - server --cluster-init

# nginx-controller 를 설치하기 위해 traefik ingress-controller 를 빼고 설치
curl -sfL https://get.k3s.io | sh -s - --disable traefik --disable metrics-server server --cluster-init

mkdir ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown -R $(id -u):$(id -g) ~/.kube
echo "export KUBECONFIG=~/.kube/config" >> ~/.bashrc
source ~/.bashrc

MASTER_IP=$(kubectl get node m1-k8s -ojsonpath="{.status.addresses[0].address}") # m1-k8s 부분은 해당 노드의 호스트명으로 대체함
NODE_TOKEN=$(sudo cat /var/lib/rancher/k3s/server/node-token)

# 설치 확인
kubectl cluster-info    # 에러 메시지가 없으면 설치 완료

echo $MASTER_IP
xx.xx.xx.x                     # 여기에 출력된 값을 워커 노드의 MASTER_IP 변수에 대입한다.

echo $NODE_TOKEN
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 여기에 출력된 값을 워커 노드의 NODE_TOKEN 변수에 대입한다.

7. 워커노드 k3s 설치

# 각 워커노드
sudo apt update
sudo apt install -y docker.io nfs-common curl

# 마스터 노드에서 출력된 값을 대입하여 저장한다.
MASTER_IP=xx.xx.xx.x     
NODE_TOKEN=xxxxxxxxxxxxxxxxxx...

curl -sfL https://get.k3s.io | K3S_URL=https://$MASTER_IP:6443 K3S_TOKEN=$NODE_TOKEN sh -s -

8. 마스터 노드에서 워커노드 확인

# 마스터노드
kubectl get node -o wide    # 마스터 노드 외에 워커 노드가 표시 되면 설치 완료!!

9. nginx-controller 설치

# helm 설치 후 아래 명령으로 설치

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm install my-release ingress-nginx/ingress-nginx -n kube-system

10. k3s 설치 제거

# 마스터노드 설치 제거
/usr/local/bin/k3s-uninstall.sh

# 워커노드 설치 제거
/usr/local/bin/k3s-agent-uninstall.sh
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크