티스토리 뷰
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
kubectl create ns ingress-nginx
helm install ingress-nginx ingress-nginx/ingress-nginx -n ingress-nginx
10. k3s 설치 제거
# 마스터노드 설치 제거
/usr/local/bin/k3s-uninstall.sh
# 워커노드 설치 제거
/usr/local/bin/k3s-agent-uninstall.sh
'Server & Etc > Kubernetes' 카테고리의 다른 글
kubernetes 에서 cert-manager로 무료 letsencrypt 인증서 발급 설정 (0) | 2022.06.07 |
---|
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크