vm ware, Xshell 설치
Xshell에 master, work1, wokr2 생성
vmware에 ip add 입력해서 주소 확인
ens32에서 주소가 192.168.0.239인 것을 확인
호스트에 주소를 입력
Ctrl + insert = 복사
Shift + insert = 붙여넣기
hostnamectl set-hostname worker1-<약자>
#서버의 호스트네임설정
<<kubeadm 을 통한 로컬 클러스터 구성.>>
—------------------------------------
sudo swapoff /swap.img
sudo sed -i -e '/swap.img/d' /etc/fstab
sudo groupadd docker
sudo gpasswd -a $USER docker
sudo usermod -aG docker $USER
sudo newgrp docker
curl -ssL https://get.docker.com/ | bash
#도커 설치하는 스크립트.
sudo systemctl enable --now docker && sudo systemctl status docker --no-pager
#도커 설치 상태 확인.
설치
git clone https://github.com/Mirantis/cri-dockerd.git
wget https://storage.googleapis.com/golang/getgo/installer_linux
chmod +x ./installer_linux
./installer_linux
source ~/.bash_profile
cd cri-dockerd
mkdir bin
go build -o bin/cri-dockerd
mkdir -p /usr/local/bin
install -o root -g root -m 0755 bin/cri-dockerd /usr/local/bin/cri-dockerd
cp -a packaging/systemd/* /etc/systemd/system
sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service
systemctl daemon-reload
systemctl enable cri-docker.service
systemctl enable --now cri-docker.socket
sudo systemctl restart docker && sudo systemctl restart cri-docker
sudo systemctl status cri-docker.socket --no-pager
-Docker cgroup Change Require to Systemd
cat <<EOF | sudo tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"insecure-registries": ["192.168.0.195:5000","rapa1.iptime.org:5000"]
}
EOF
sudo systemctl restart docker && sudo systemctl restart cri-docker
sudo docker info | grep Cgroup
-Kernel Forwarding , kube-proxy(= 파드의 통신, 오버레이 네트워크를 담당) 설정.
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl unzip
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
-Update 해야 패키지 인식함
sudo apt-get update
-k8s 설치
sudo apt-get install -y kubelet kubeadm kubectl
-버전 확인하기
kubectl version --short
-버전 고정하기
sudo apt-mark hold kubelet kubeadm kubectl
<<<마스터만>>>
sudo kubeadm config images pull --cri-socket unix:///run/cri-dockerd.sock
sudo kubeadm init --pod-network-cidr=10.10.0.0/16 --apiserver-advertise-address=<master의 ens32 IP> --cri-socket /var/run/cri-dockerd.sock
--ignore-preflight-errors=ALL
#init이나 join시 에러 발생하면 이 옵션을 붙여서 다시한번 해본다.
mkdir -p HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):(id -g) $HOME/.kube/config
#위 3줄을 통해 마스터 노드에서 kubectl 명령어를 칠 수 있다.
<<<<노드만>>>>
kubeadm join <master의 ens32 IP> --token <생성된 토큰> --cri-socket /var/run/cri-dockerd.sock
CNI(Container Network Interface) - calico
curl https://projectcalico.docs.tigera.io/manifests/calico.yaml -O
sed -i -e 's?192.168.0.0/16?10.10.0.0/16?g' calico.yaml
-우리는 pod가 사용할 네트워크를 10.10.0.0/16 대역으로 정의했기때문에 변경해준다.
-sed는 뒤에 명시한 파일(calico.yaml)에서 매칭되는 내용을 변경하는 명령어.
kubectl apply -f calico.yaml
—--------------------------------------
사설저장소에서 이미지를 풀링,푸쉬하기위한 방법
vi /etc/docker/daemon.json
#위 파일에 쉼표 추가후 아래 내용을 추가
"insecure-registries": ["192.168.0.195:5000","rapa1.iptime.org:5000"]
systemctl restart docker
#아무런 메세지가 뜨지 않으면 정상.
kubectl create secret docker-registry test --docker-server=192.168.0.195:5000 \
--docker-username=test \
--docker-password=test \
--docker-email=test@test.com
#마스터 노드에 복붙. 사설저장소에 접근 가능한 계정을 하나 생성했다고 보면 됩니다.
kubectl create secret docker-registry test1 --docker-server=rapa1.iptime.org:5000 \
--docker-username=test \
--docker-password=test \
--docker-email=test@test.com
#마스터 노드에 복붙. 사설저장소에 접근 가능한 계정을 하나 생성했다고 보면 됩니다.