상세 컨텐츠

본문 제목

[Kubernetes] centos 7 kubernetes 설치하기

Devops 도전기/kubenetes

by 끝까지해봐야지 2024. 5. 17. 20:53

본문

서버 준비

- 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

 

CentOS  설정

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 가 설치 되어있지 않은 경우에는 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

 kubernetes 설치

- 모든 서버에서 동일하게 실행시켜 준다

 

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

 

Kubernetes 설정

[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

쿠버네티스 설치 완료

 

 

Master node 에서 Pod 배포해보기

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 삭제

'Devops 도전기 > kubenetes' 카테고리의 다른 글

[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

관련글 더보기