25/01/19
1. 가상 머신 VMware에서
1) File ➡️ New ➡️ Install from disc or ➡️ image arm64.iso 이미지를 드래그(기본적으로 server 버전으로 먼저 설치)
2) 기본세팅 값(상세 값은 밑에 customize settings에서 변경가능하다)
3) 개인적으로 어댑터를 먼저 설정하고 들어가는 것이 나중에 편했다. nat는 기본적으로 설정이 돼있다. 그렇기에 우측 상단 Add Device를 누르고 하단의 사진에서

Network Adapter 를 눌러 두번째 어댑터를 생성해주고, Private to my Mac를 선택.

4) 우분투 설치 진행

순서대로 이름, 컴퓨터 이름, 사용자 이름, 패스워드 순서다.
(만약 이와 같은 오류가 뜬다면 종료하지 말고 참을 인을 되새기며, 위의 과정을 3~4번만 다시 그대로 진행하면 되더라구요..)
5) 우분투 설치 완료시 하단 사진과 같다

6) 추가적으로 명령어
- sudo -i 로 root로 전환.
- passwd 로 root 비밀번호 설정
- apt update && apt upgrade -y
- apt install openssh-server && apt install net-tools -y
- apt install ubuntu-desktop 우분투 gui 설치
- reboot로 재실행
그러면 하단과 같이 실행된다.

화면이 실행하고 명령어로
sudp apt update && apt upgrade -y
sudo apt install open-vm-tools-desktop -y 설치해준다( 편안함을 위해 )
7. (0202 추가) 상단 Virtual Machine -> settings -> sharing -> Enable shared Folders 체크
7) 그리고 우측 상단을 누른후 종료하기
종료후 위에 시디모양을 누르고 disconnect를 하면 된다
(하지만 사진은 이미 연결을 끊고 나서라, connect가 나와있다. (02/02추가))
8) 명령 프로프트에서 nano/etc/ssh/sshd_config 를 작성후 수정해주기

9) 명령 프로프트에서 nano/etc/hosts를 작성후 수정해주기

10) 호스트 이름 변경하기

11) 네트워크 설정: 명령 프로프트에서 nano/etc/netplan/ ~.yaml (해당 폴더에 있는 가장빠른 숫자의 .yaml파일)를 작성후 수정해주기. 변경 완료후 명령 프롬프트에서 netplan apply.
(0202 추가 ifconfig를 입력 후 nat, host 의 인터페이스명 확인후 nat는 자동, host는 고정ip로 수정. 현재 저는 ens160이 nat, 192가 host입니다. 확인 하는 방법은
ping -c 3 -I ens160 8.8.8.8 && ping -c 3 -I ens192 8.8.8.8 으로 반응이 있으면 nat, 없으면 host입니다.
)

12) 통신을 위한 방화벽 설정
ufw status
ufw enable
ufw allow 22
13) 이상태로 다시 종료 후
vmware 상단에서 버추얼 머신 ➡️ Create full clone 으로 총3~4개의 머신으로 복사.
저는 각각 구분하기 쉽게 master, node1~3으로 구성했습니다.
머신을 실행 후
명령어로 su root로 root계정으로 들어가.
클론된 머신의 각 머신의 ip를 nano/etc/hosts 에서 작성한 것과 같게 ip, hostname 일치시키기
1) hostname 수정
2) nano/etc/netplan/ ~.yaml에 hostname에 따라 ip 수정하기
3) netplan apply로 변경 내용 수정하기
조금씩 추가해가기
부트캠프에서 수업을 듣고 강사님께 쿠버네티스를 구축했다는 이야기를 아침에 전했었는 데, 선생님께서 kubectl -get pods -A로 확인을 해봤는지 물어보셨었다. 하지만 오류를 발견했고, 이를 고쳐보려했지만. 계속 실패했었다.(플러그인에서 계속 오류가 발생)
02.02일자로 weave-net -> calico로 변경하고 방화벽 포트 허용 후 성공)
14) master에서만 명령어: ssh-keygen -t rsa 입력 후 enter * 2 로 키를 생성하기

15) ls -al로 .ssh 폴더 확인 후 이동

ㄱ.명령어 ssh-copy-id -i id_rsa.pub examtest@examnode1 (1부터 3모두)을 이용해 키복사
ㄴ. ssh examtest@examnode1 으로 해서 접속되면 쿠버네티스 설치까지 준비는 끝
챕터2. 구축하기
1. 모든 가상 머신을 켜주기
2. 가상머신 내부x, 맥북 터미널을 사용해서 2개의 가상머신을 연결해주기(명령어는 하단의 사진처럼 .local 붙여주기)
(⚠️ 가상머신 내부의 터미널을 그대로 사용해도 되지만, 복사. 붙여넣기가 많아서 불편해서 비추!.)


swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab
ㄴ. 필요한 프로그램 설치하기(모든 노드)
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release -y

ㄷ. Docker GPG key 추가(모든 노드)
curl -fsSL https://download.docker.com/linux/ubuntu/gpg
| sudo apt-key add -
ㄹ. ⚠️ Docker 레포지토리 추가(모든 노드) 맥의 arm 아키텍쳐용(윈도우 안돼요❌)
sudo add-apt-repository "deb [arch=arm64]
https://download.docker.com/linux/ubuntu focal stable"

ㅁ. apt-get update(모든 노드)
apt-get update
ㅂ. containerd 설치(모든 노드)
sudo apt-get install docker-ce docker-ce-cli containerd.io
ㅇ. 도커 버전확인

docker version
ㅈ. 도커 활성화(모든 노드) && examtest계정에 권한부여(모든)
systemctl enable docker
usermod -a -G docker kubertest
ㅊ.IPv4 전달 및 iptables에서 브리지 트래픽 확인 (모든 노드)
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
ㅌ. containerd를 CRI 런타임으로 사용(모든 노드)
1. 생성
mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
nano /etc/containerd/config.toml
sudo systemctl restart containerd
systemctl status containerd
ㅍ.kubeadm설치(모든 노드)
1. 쿠버네티스 저장소에 필요한 패키지설치
sudo apt-get update
# apt-transport-https may be a dummy package; if so, you can skip that package
sudo apt-get install -y apt-transport-https ca-certificates curl
2.공개서명키 다운로드
sudo mkdir -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | 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
ㅎ. 설정 (마스터, 워커 노드 별 다름)
address = 마스터의 ip 입력
kubeadm init --apiserver-advertise-address=192.168.248.120 --pod-network-cidr=10.32.0.0/12
초기화 성공시 아래와 같은 코드들이 나온다.
아래 코드는 마스터 노드에 입력
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
아래 코드는 워커 노드에 입력
kubeadm join 192.168.248.120:6443 --token ~~~
아래 사진과 같이 출려되면 된다!.

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
맥북에서는 weave net이 안되는 듯하다. 수어번 재설치를 반복해봤지만. weave net는 실패를 반복했고, calico만 성공했다.
weave net의 yaml를 다운받고, 기존의 amd64 image를 바꿔도 봤지만 안됐다.
그리고 calico를 했음에도 안되시는 분은 모든 노드에서 df -h 명령어를 사용해서 디스크가 부족한지 확인해보시는 걸 추천드립니다...!
vm을 구성시 disk의 값은 넉넉히 30이상을 추천드립니다
+2/15 일 추가
etcd 선출 오류가 정말 잦다.
systemctl stop etcd
systemctl restart kubelet
systemctl restart etcd
일단 멈춰주고, 시작하면 완료
kubectl patch felixconfiguration default --type='merge' -p '{"spec":{"ipinipEnabled":true}}'
안녕하세요! 부캠관련 여쭤보고싶은게 있어서 그러는데 혹시 괜찮으실까요??