*설치 전 읽어 보기
참고 - https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
kubeadm 설치하기
이 페이지에서는 kubeadm 툴박스 설치 방법을 보여준다. 이 설치 프로세스를 수행한 후 kubeadm으로 클러스터를 만드는 방법에 대한 자세한 내용은 kubeadm 으로 클러스터 생성하기 페이지를 참고한다
kubernetes.io
-- 설치 사전 작업 start --
1) kubenetes.io에 따르면 스왑의 비활성화. kubelet이 제대로 작동하게 하려면 반드시 스왑을 사용하지 않도록 설정한다.
#경로 /etc/fstab
#스왑확인
$swapon -s
#스왑 비활성화
$swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab

2)CentOs SELinux 비활성화
kubenetes.io에 따르면 이는 컨테이너가 예를 들어 pod 네트워크에 필요한 호스트 파일 시스템에 액세스할 수 있도록 허용하는 데 필요합니다. kubelet에서 SELinux 지원이 개선될 때까지 이 작업을 수행해야 합니다.
구성 방법을 알고 있는 경우 SELinux를 활성화된 상태로 둘 수 있지만 kubeadm에서 지원하지 않는 설정이 필요할 수 있습니다.
#상태 확인
$sestatus
#비활성화(일시적)
$setenforce 0
#비활성화(영구적)
$sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
#재부팅 후 확인
$shutdown -r now

참고 - https://jjeongil.tistory.com/1331
CentOS 7 : SELinux 비활성화하는 방법, 예제, 명령어
SELinux(Security Enhanced Linux )는 관리자와 사용자가 액세스 제어를 더 많이 제어할 수 있는 Linux 커널 보안 모듈입니다. SELinux 정책 규칙에 따라 액세스할 수 있습니다. SELinux 정책 규칙은 프로세스와.
jjeongil.tistory.com
3) 방화벽 비활성화
#상태 확인하기
$systemctl status firewalld
#정지 및 비활성화
$systemctl stop firewalld
$systemctl disable firewalld


4) 리눅스 노드의 iptables가 브리지된 트래픽을 올바르게 보기 위한 요구 사항으로 설정을 해야 한다.
$cat <<EOF > /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
https://kubernetes.io/ko/docs/setup/production-environment/_print/
프로덕션 환경
프로덕션 수준의 쿠버네티스 클러스터 생성
kubernetes.io
-- 설치 사전 작업 end --
5) kube 패키지 repo 등록
$cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF
6) 패키지 설치
$yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
7) kubeadm 설정
!에러키워드! The connection to the server localhost:8080 was refused - did you specify the right host or port?
참고 - https://twofootdog.tistory.com/82
The connection to the server localhost:8080 was refused 해결방법
kubectl을 통해서 쿠버네티스 클러스터에 접속하려 할 때 다음과 같은 에러 메시지가 발생하는 경우가 종종 있다. The connection to the server localhost:8080 was refused - did you specify the ..
twofootdog.tistory.com
kubeadm init루트가 아닌 사용자에 대해 kubectl이 작동하도록 하려면 다음 명령을 실행한다 .
#일반 계정일때
$mkdir -p $HOME/.kube
$cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$chown $(id -u):$(id -g) $HOME/.kube/config
#root 계정일때
$export KUBECONFIG=/etc/kubernetes/admin.conf
Creating a cluster with kubeadm
Using kubeadm, you can create a minimum viable Kubernetes cluster that conforms to best practices. In fact, you can use kubeadm to set up a cluster that will pass the Kubernetes Conformance tests. kubeadm also supports other cluster lifecycle functions, su
kubernetes.io
8) kubenetes cgroup 드라이버 설정
컨테이너 런타임과 kubelet의 cgroup 드라이버를 일치시켜야 하며, 그렇지 않으면 kubelet 프로세스에 오류가 발생한다.
#/var/lib/kubelet/config.yaml 에 파일 만들기
$cat <<EOF > /var/lib/kubelet/config.yaml
kind: ClusterConfiguration
apiVersion: kubeadm.k8s.io/v1beta3
kubernetesVersion: v1.25.0
---
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: systemd
EOF
#그런 다음 이러한 구성 파일을 kubeadm 명령에 전달
kubeadm init
참고 - https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver/
Configuring a cgroup driver
This page explains how to configure the kubelet cgroup driver to match the container runtime cgroup driver for kubeadm clusters. Before you begin You should be familiar with the Kubernetes container runtime requirements. Configuring the container runtime c
kubernetes.io
9) kubelet 실행 확인 하기
#시작 하기
$systemctl enable kubelet
$systemctl start kubelet
#확인
$systemctl status kubelet
#버전 확인
$kubeadm version -o short
$kubectl version --short
$kubelet --version
