준비물-> centos 7 // vertual box //
# 버츄얼박스 네트워크 설정 ( 호스트 네트워크 관리자)
## 파일-호스트네트워크 관리자로 들어간다
##virtualBox Host-Only Ethernet Adapter 클릭->아래 어댑터 탭에서 설정시작
$ip route # -> 게이트웨이 확인(default에 나오는 값)
1.수동으로 어댑터 설정
2. ipv4 주소= 192.168.56.1
3. ipv4 서브넷 마스크 = 255.255.255.0
4. dhcp 체크해제
적용
# 버츄얼박스 os(centos 7 이미지생성/ 최소 2개 생성/용량30gb/cpu코어 2코어 이상 만들것)
## 이미지우클릭 - 설정 - 네트워크
1. 1번 어댑터는 NAT로 설정
2. 2번 어댑터는 호스트 전용 어댑터를 클릭
3. 1번 어댑터 -고급-포트포워딩//
포트 포워딩 규칙 추가 한다. (추후 ssh, web 외부 접속을 위해 22, 80포트)
## master로 쓸 vm image에서 수정
- 호스트ip 192.168.56.1
- 호스트 port 22
- 게스트ip 192.168.56.150
- 게스트 port 22
## node로 쓸 이미지도
- 호스트 ip 위와 동일
- port 23
- 게스트 ip: 192.168.56.151
- 게스트port 23
혹시 호스트 ip 찾는법 모르시는 분을 위해서 아래의 url을 참고
# 설정후 os설치
https://respecttt.tistory.com/51
버츄얼박스 host ipv4 주소 알아내는 법 / virtual box ip 보는법
광고한번씩 클릭 해 주시면 있던 오류도 사라질 겁니다.! 큰 도움이 됩니다. 한번씩만 클릭 부탁드리겠습니다.ㅠㅠㅠㅠ 버츄얼 머신을 실행시키면 버츄얼 머신과 네트워킹 하는 ip를 할당하게
respecttt.tistory.com
*버츄얼 박스 마스터 이미지
#centos 설치 후
(moba XTerm으로 ssh로 접속한다.)
ex) root@192.168.56.1:22
(master이미지 설정)
* network설정
cd /etc/sysconfig/network-scripts
vi ifcfg-enp0s8 (이름이 가끔 달랐음 ex // ifcfg-enp0s3)
[master/ifcfg-enp0s8]
#2개 변경
BOOTPRTO=static
ONBOOT=yes
# 맨 아래에 2줄 추가
IPADDR=192.168.56.150
GATEWAY=192.168.56.1
-> :wq로 저장후 빠져나옴
* hostname, hosts설정
vi /etc/hostname
[hostname]
k8s-master
-> :wq로 저장후 빠져나옴
vi /etc/hosts
[hosts]
추가
192.168.56.150 k8s-master
192.168.56.151 k8s-node1
-> :wq로 빠져나옴
$systemctrl restart network
$systemctrl reboot
* 버츄얼박스 노드1 이미지 설정
위와 같으나
2가지 다른것이 있다.
1. [ipcfg-enp0s8]
IPADDR=192.168.56.151
2. [hostname]
k8s-node1
으로 설정 후 똑같이 다 해준다.
본격적인 kubenetis설치
[마스터, 노드1 이미지 둘다 설치해야함]
1. 도커설치
$ curl -s https://get.docker.com | sudo sh
$ systemctl enable --now docker
2. selinux, swap, 방화벽 비활성화
$ setenforce 0
$ sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
$ swapoff -a
$ sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
$ systemctl disable firewalld
$ systemctl stop firewalld
3.iptables 설정
##cat부터 EOF까지 복사해서 붙혀넣기
$ 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 sysctl --system
kube시리즈 3개 설치
[마스터, 노드1 이미지 둘다 설치해야함]
1. repo등록.
$ cat <<EOF | sudo 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
repo_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
2. 설치
$ yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
$ systemctl enable --now kubelet
daemon.json 편집
$ 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",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
EOF
설치 완료 후 [master]에서만 입력
$ kubeadm init --apiserver-advertise-address 192.168.56.150 --pod-network-cidr=172.31.0.0/16
##에러 발생시
$ rm /etc/containerd/config.toml
$ systemctl restart containerd
입력후 다시 위의 명령어로 init
init이 완료된 커멘드창을 자세히 보면
mkdir -p $HOME/.kube로 시작되는 메세지 부터 3개를 각각 입력해준다.
그리고 export KUBECONFIG으로 시작하는 명령어도 입력하여
총 4개의 명령어를 추가로 입력해준다.
그리고 조금 아래에 보면 kubeadm join 으로 시작하는 메세지도 복사한다.// 토큰값까지
ex)
kubeadm join 192.168.56.150:6443 --token au8frb.4deses4x2qq6debo --discovery-token-ca-cert-hash sha256:303378599aca0206f994607e584a9a2dc2ab74131020e4b4fd1956f2dad6ba89
그리고 node1 이미지에서
복사한 kubeadm join ~ 을 붙혀넣기 하여 master node에 join 시킨다.
[master]
$ kubectl get nodes를 쳐서 노드가 클러스터에 참여하는지 확인한다.
[weave]
$ kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml
다른 쿠버네티스 설치를 보면 weave설치할때 다운이 안받아져서 계속 에러가 나는데 git으로 주소를 바꾼듯 하다.
네임스페이스 확인
$kubectl get pods --all-namespaces
설치시 내가 많이 햇갈렸던 부분은 네트워킹이다.
네트워킹 관련하여 잘 몰라서 여러번 삽질을 한것.
그리고 weav추가가 잘 안되서 찾아보니 git으로 주소가 바꼈었던것.
1. 버츄얼박스에서 각 이미지들간의 통신을 어떻게 설정할 것인가?
2. os안에서 ip설정 및 hosts 설정등
설치 끝...?
아. 추가로 설치 실패시
$ kubeadm reset
$ systemctl restart kubelet
$ systemctl reboot