- VMware 가상서버로 준비했다
- CPU는 2 cores, memory는 2GB
hostname | ip | roles |
k8s-master | 192.168.80.128 | control-plane |
k8s-node1 | 192.168.80.129 | worker |
k8s-node2 | 192.168.80.130 | worker |
1) selinux 비활성화
sudo setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
2) swap 비활성화
sudo swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
3) 방화벽 비활성화
- 운영환경에서는 당연히 방화벽 작업을 해주어야 하지만 테스트 용도이므로 firewall 설정 x
sudo systemctl stop firewalld && sudo systemctl disable firewalld
4) br_netfilter 설정
- pod끼리 통신을 가능할 수 있도록 하는 설정
cat << EOF > /etc/modules-load.d/k8s.conf
br_netfilter
EOF
5) iptables 커널 활성화
cat << EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
6) 4번과 5번 내용을 적용
sysctl --system
7) hosts 설정
- 각각의 서버에서 hostname을 설정해준다
#master server
# hostnamectl set-hostname k8s-master
#node1 server
# hostnamectl set-hostname k8s-node1
#node2 server
# hostnamectl set-hostname k8s-node2
8) hosts등록
cat <<EOF >> /etc/hosts
192.168.0.40 k8s-master
192.168.0.42 k8s-node1
192.168.0.43 k8s-node2
EOF
9) centos package update
yum update -y
10) disabled_plugins 주석처리
- containered 를 runtime으로 사용 할 수 있도록 주석 처리를 해준다.
vi /etc/containerd/config.toml
systemctl restart containerd
- docker 가 설치 되어있지 않은 경우에는 docker 설치가 필요하다.
https://donotlimityourself.tistory.com/26
Linux 7 에 docker 설치방법
Yum-utils 업데이트yum install -y yum-utilsDocker-ce 레포 추가yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoDocker 설치yum install docker-ce docker-ce-cli containerd.io -yDocker 시작 및 서비스 등록s
donotlimityourself.tistory.com
1) daemon.json 편집
- cgroupdriver를 systemd로 설정
cat << EOF >> /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
2) Docker 재실행
systemctl restart docker
systemctl enable docker
- 모든 서버에서 동일하게 실행시켜 준다
1) kubernetes yum repository 설정
cat << EOF > /etc/yum.repo.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/repodata/repomd.xml.key
EOF
구글 미러 EOS됨
cat << EOF > /etc/yum.repo.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpghttps://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
2) kubernetes 패키지 설치
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
3) kubelet 실행
systemctl enable kubelet && systemctl start kubelet
[1] Master node 만들기
1) kubeadm 초기화
- 아래 명령어를 실행하면 다음과 같이 kubeadm으로 시작하는 명령어가 나오는데 이는 worker node들이 master노드와 연결 하기 위해 필요
kubeadm init
* token 은 아래 명령어로 다시 출력 할 수 있다.
kubeadm token create --print-join-command
2) 환경변수 설정 - 사용 할 config 지정
- kubeadm init 명령어 수행후 나온 명령어 그대로 사용
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown -R $(id -u):$(id -g) $HOME/.kube/config
3) CNI 설치
https://kubernetes.io/docs/concepts/cluster-administration/addons/
- cni 설치해야 정상작동한다
- https://github.com/rajch/weave#using-weave-on-kubernetes 의 설명대로 설치 진행
kubectl apply -f https://reweave.azurewebsites.net/k8s/v1.29/net.yaml
[2] worker node 만들기
1) kubeadm join
- master node 에서 kubeadm 초기화 한 후 생긴 명령어를 실행 시켜 준다.
2) work node에 admin.conf 배포
- work node에서 `kubectl get nodes ` 명령어를 입력 하면 connection 에러가 나는데 이를 해결하기 위해서는 master에 있는 admin.conf 파일을 worker node에 배포를 해주어야 한다.
mkdir -p $HOME/.kube
scp [master IP]:/etc/kubernetes/admin.conf $HOME/.kube/config
* 혹시나 work node join시 문제가 생기는 경우 아래 명령어를 입력하여 reset 해 준 후 다시 join 하면 된다.
kubeadm reset
1) kubectl alias 등록
alias k=kubectl
2) yaml형태
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
3) pod 상태 확인
4) curl 명령어 실행해보기
정상작동 확인
5) pod 삭제
[Kubernetes] pod 설명 (1) | 2024.05.21 |
---|---|
[Kubernetes] Yaml 설명 (0) | 2024.05.21 |
[Kubernetes] 설치하기 (minikube) (0) | 2024.05.21 |
[Kubernetes] 아키텍처 (0) | 2024.05.21 |
[Kubernetes] 쿠버네티스란 무엇인가? (0) | 2024.05.17 |