Kubernetes 설정

aeokseung·2023년 2월 1일
0

kubernetes

목록 보기
2/9

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

#마스터 노드에 복붙. 사설저장소에 접근 가능한 계정을 하나 생성했다고 보면 됩니다.

profile
https://aeokseung.tistory.com/ 티스토리로 옮겼습니다!

0개의 댓글