쿠버네티스(k8s) 시작 -1 (기본 설정)
2022. 3. 29. 15:54ㆍ가상 머신/k8s
본격적으로 k8s를 공부하기 위해서는 설치하고 이것저것 설정할 것이 많았다.
생각보다 어려웠다.
Disable SELinux
Security-Enhanced Linux, 리눅스 커널 보안 모듈이며 2003년에 업스트림 Linux 커널로 통합됐다.
SELinux는 관리자가 시스템 액세스 권한을 효과적으로 제어할 수 있게 하는 Linux 시스템용 보안 아키텍쳐이다.
세가지 모드 설정 가능
- enforce(Default) : SELinux의 보안 정책을 적용시킴
- permissive : SELinux의 보안 정책에 어긋나도 동작은 허용
- disable : SELinux 기능을 해제
개발 서버는 Permissive로 진행할 것이다.
$ setenforce 0
$ sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
아래 명령어를 통해 현재 모드를 확인한다.
$ sestatus
..생략..
Current mode: permissive
..생략..
방화벽 비활성화
방화벽을 끄지 않을 수 있지만, 개발 서버는 끄고 진행하도록 하겠다.
$ systemctl stop firewalld && systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Network Manager 비활성화
Network Manager도 끄고 진행하도록 하겠다.
$ systemctl stop NetworkManager && systemctl disable NetworkManager
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
Removed symlink /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service.
Swap 비활성화
k8s에서 Swap 비활성 관련해서 이슈가 있는 듯 싶다.
개발 서버는 비활성으로 하지만, 상용 서버를 구성할 때는 관련 이슈를 참고해야 겠다.
$ swapoff -a && sed -i '/ swap / s/^/#/' /etc/fstab
iptables 커널 옵션 활성화
레드헷 계열 커널 사용시 iptables가 무시되는 문제로 라우팅이 잘못되는 현상이 발생할 수 있다고한다.
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
k8s yum Repository 설정
yum repo를 설정하지 않으면 기본적으로 k8s를 설치할 수 없다.
k8s 설치할 때 ... not available 뜨면 yum repo가 설정되지 않은 것일 수 있다.
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
hosts 등록
master와 node의 호스트 이름과 IP를 등록한다.
cat << EOF >> /etc/hosts
192.168.10.4 k8s-master
192.168.10.5 k8s-node1
192.168.10.6 k8s-node2
EOF
Docker 설치
도커 설치 전, 필요한 패키지 설치
yum install -y yum-utils device-mapper-persistent-data lvm2
도커 설치를 위한 저장소 설정
yum install -y yum-utils device-mapper-persistent-data lvm2
도커 설치
yum update -y && yum install -y docker-ce-18.06.2.ce
도커 설정 파일 생성
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
k8s 설치
yum install -y --disableexcludes=kubernetes kubeadm-1.15.5-0.x86_64 kubectl-1.15.5-0.x86_64 kubelet-1.15.5-0.x86_64
Master Node 설정
docker 및 k8s 실행
docker 실행
systemctl daemon-reload
Hellofor Docker!가 출력되는 것을 확인한다.
systemctl enable --now docker
docker run hello-world
k8s 실행
systemctl enable --now kubelet
k8s 초기화 명령
cidr과 ip를 설정한다.
kubeadm init --pod-network-cidr=20.96.0.0/12 --apiserver-advertise-address=192.168.10.4
kubeadm join 192.168.10.4:6443 --token zhghkg.1g680zsb0eg0jai2 \
--discovery-token-ca-cert-hash sha256:0140c3bd755d5dc9b1845e432828524e9e4142407f24a4883ecfa718d9461f7e
위와 같은 문구가 출력되면 저장해둔다.
환경 변수 설정
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl 자동완성 기능 설치
yum install bash-completion -y
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
Slave Node 설정
docker 및 k8s 실행
도커 실행
systemctl daemon-reload
systemctl enable --now docker
k8s 실행
systemctl enable --now kubelet
Master Node와 연결
Master Node init할 때 저장해뒀던 내용 붙여넣기를 한다.
kubeadm join 192.168.10.4:6443 --token zhghkg.1g680zsb0eg0jai2 \
--discovery-token-ca-cert-hash sha256:0140c3bd755d5dc9b1845e432828524e9e4142407f24a4883ecfa718d9461f7e
Node 연결 확인
Master Node에서 아래 명령어를 통해 추가된 Node가 있는지 확인한다.
kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master NotReady master 6d18h v1.15.5
k8s-node1 NotReady <none> 11s v1.15.5
k8s-node2 NotReady <none> 10s v1.15.5
'가상 머신 > k8s' 카테고리의 다른 글
쿠버네티스(k8s) 시작 - 2 (플러그인 설치) (0) | 2022.03.29 |
---|---|
Virtual Box 설정 (k8s, VM 설정, NAT Network, DHCP) - 외부에서 ssh로 VM 연결하기 (0) | 2022.03.15 |