본문 바로가기

🚀 부트캠프 - PLAYDATA/📒 수업 내용 정리

작은 쿠버네티스 경험하기

VirtualBox 설치 

CentOS 이미지 파일 설치 

만들기 버튼으로 생성 

 

일반에서 다운받은 이미지 설정하기 

네트워크 어댑터 1 -> NAT

어댑터 2 -> 호스트 전용 어댑터 설정 

마우스 잡기 설정 

 

 

 

yum update
yum install net-tools
	- ifconfig
yum install vim -y

 

 

 

 

 

 

 

 

set nu -> 숫자 보기 

명령어 숫자 입력 해당 라인으로 이동

문서의 끝 G

문서의 처음 gg 

yy 한줄 복사 p 

 

 

 

 


 

네트워크가 잘 돌아가는지 확인하기 위해서 구글로 ping을 보냄. 

ping -c 2 8.8.8.8

 

network-scripts 폴더 안에 네트워크 설정 파일들이 있음.

cd /etc/sysconfig/network-scripts

 

 

 

ifcfg-enp0s3 폴더를 vi로 열기 (centOS 7에서는 vim 아니고 vi)

ls
vi ifcfg-enp0s3

 

BOOTPROTO="dhcp"   // 동적 아이피 라는 의미

## 수정할 부분 ## 
ONBOOT="yes"

 

systemctl  -> docker service 할 때 service 를 centOS에서 이렇게 표현함 

systemctl restart network

 

 

## apt 대신에 yum 이라는 명령어를 통해서 install함
yum update

##  - ifconfig 명령어를 사용하기 위해 net-tools를 설치함 
yum install net-tools  

## vim 설치 
yum install vim -y

 

VirtualBox에서 해당 컴퓨터 ip확인 / 명령어 아님. 

192.168.56.1/24

 

이번에는 ifctg-enp0s8 설정 

## vim 
vim ifcfg-enp0s8

BOOTPROTO=none

ONBOOT=yes

IPADDR=192.168.56.10

GATEWAY=192.168.56.1

 

systemctl restart network

 

윈도우 터미널에서 ping 보내보기 

ping 192.168.56.10

PuTTY로 root 권한으로 접속 + 비밀번호 설정  (복붙이 잘 안되고 글씨가 작아서 putty 터미널로 옮김...)

login as: root
root@192.168.56.10's password:
Last login: Fri Oct 20 08:49:31 2023

[root@localhost ~]# ls -al

[root@localhost ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:kISHrLz1jimvv4JyoWHNnJ268XfCrWlF41RNa5Gt09I root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|   . o.     ooo  |
|    +...   . oo. |
| . . .o   .  o+  |
|  o .  . +  .+ E |
|  +oo.. S .   o  |
|..o= o.  o       |
|.+ o.+. o        |
|+ +.= .=.o       |
|...B=ooo+        |
+----[SHA256]-----+
[root@localhost ~]# cd ~

## Key 생성되었는지 확인 ##  
[root@localhost ~]# cd .ssh
[root@localhost .ssh]# ll
합계 8
-rw-------. 1 root root 1679 10월 20 10:28 id_rsa
-rw-r--r--. 1 root root  408 10월 20 10:28 id_rsa.pub

## User 생성 
[root@localhost .ssh]# sudo adduser k8s
[root@localhost .ssh]# sudo passwd k8s
k8s 사용자의 비밀 번호 변경 중
새  암호:
잘못된 암호: 암호가 앞뒤 어느쪽에서 읽어도 같은 문맥임
새  암호 재입력:
죄송합니다. 암호가 일치하지 않습니다.
새  암호:
잘못된 암호: 암호는 8 개의 문자 보다 짧습니다
새  암호 재입력:
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.

## sudo 권한을 실행할 수 없어서 따로 설정을 해줘야 함. 
[root@localhost .ssh]# su k8s
[k8s@localhost .ssh]$ ls
ls: cannot open directory .: 허가 거부
[k8s@localhost .ssh]$ cd /home/
[k8s@localhost home]$ ls
k8s

## 권한이 없어서 일어나는 일 
[k8s@localhost home]$ sudo yum install openjdk-11-jdk

로컬 시스템 관리자에게 일반적인 지침을 받았으리라 믿습니다.
보통 세가지로 요약합니다:

    #1) 타인의 사생활을 존중하십시오.
    #2) 입력하기 전에 한 번 더 생각하십시오.
    #3) 막강한 힘에는 상당한 책임이 뒤따릅니다.

[sudo] k8s의 암호:
k8s은(는) sudoers 설정 파일에 없습니다.  이 시도를 보고합니다.
[k8s@localhost home]$ exit
exit
You have mail in /var/spool/mail/root
[root@localhost .ssh]# cd ~
[root@localhost ~]# cd /etc

[root@localhost etc]# ls -al | grep sudoers
-r--r-----.  1 root root     4328  1월  8  2022 sudoers
drwxr-x---.  2 root root        6  1월 26  2023 sudoers.d
[root@localhost etc]# vim ./sudoers
[root@localhost etc]# vim ./sudoers
[root@localhost etc]# vim ./sudoers
[root@localhost etc]# vim ./sudoers
[root@localhost etc]# vi sudo ./sudo
sudo-ldap.conf  sudo.conf       sudoers         sudoers.d/
[root@localhost etc]# visudo
[root@localhost etc]# su k8s

 

새로 만들어준 계정에 권한을 줬으니 이제 다시 키를 생성한다. 

 

키 보내주기 

[k8s@localhost .ssh]$ cat id_rsa.pub >> authorized_keys

 

키를 받은 폴더가 생성 됨. 

AWS에서 받은

[k8s@localhost .ssh]$ ^C
[k8s@localhost .ssh]$ chmod 600 ./authorized_keys
[k8s@localhost .ssh]$ ll
합계 12
-rw-------. 1 k8s k8s  407 10월 20 10:50 authorized_keys
-rw-------. 1 k8s k8s 1679 10월 20 10:48 id_rsa
-rw-r--r--. 1 k8s k8s  407 10월 20 10:48 id_rsa.pub
[k8s@localhost .ssh]$ ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:VmkiHEI/iUzhygIvr/QXgd588UYsQUbW0gjN2Gix+Mk.
ECDSA key fingerprint is MD5:34:08:79:11:42:bb:39:72:66:c6:5c:f9:d5:75:8e:a3.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
Last login: Fri Oct 20 10:43:47 2023
[k8s@localhost ~]$ ssh 127.0.0.1
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:VmkiHEI/iUzhygIvr/QXgd588UYsQUbW0gjN2Gix+Mk.
ECDSA key fingerprint is MD5:34:08:79:11:42:bb:39:72:66:c6:5c:f9:d5:75:8e:a3.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts.
Last login: Fri Oct 20 10:53:15 2023 from localhost
[k8s@localhost ~]$ w   // 세션 보는 명령어 
 10:53:42 up  2:04,  4 users,  load average: 0.05, 0.06, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      08:49    1:02m  0.35s  0.35s -bash
root     pts/0    gateway          09:53    6.00s  0.15s  0.03s ssh localhost 
k8s      pts/1    localhost        10:53    6.00s  0.04s  0.02s ssh 127.0.0.1
k8s      pts/2    localhost        10:53    4.00s  0.03s  0.02s w
[k8s@localhost ~]$ exit
logout
Connection to 127.0.0.1 closed.

계정과 키가 동일해서 서로 암호를 안물어보고 로그인을 할 수 있음. 

 

 

 

vim 명령어 

  • :set nu  -> 숫자 보이도록 
  • 명령어 숫자 입력 해당 라인이동 
  • 문서의 끝으로 이동 대문자 G 
  • 문서의 처음올 이동 소문자 gg
  • 밖으로 나가기 (q!)

visudo 

su k8s

ssh-keygen -t rsa

cd ~/.ssh

cat id_rsa.pub >> authorized_keys

chmod 600 ./authorized_keys

ssh 127.0.0.1



visudo -> sudo 권한 설정

 

sudo 명령어 허용해줌,

 


Docker 설치 

sudo yum install docker -y   // docker 설치 
sudo systemctl enable --now docker // 시스템 설정 ? 실행 하면서 하겠다

docker ps를 하면 권한이 없어서 실행되지 않음. 일단 alias를 sudo docker를 해주도록 함. 

sudo docker ps

 

[k8s@localhost ~]$ vim ~/.bashrc

 

별칭을 해줌. sudo 권한이 없으니까

:wq 로 저장하고 빠져나오기

## vim으로 수정해준 경우 source~ 를 입력해야 적용이 되는 것임  

[k8s@localhost ~]$ vim ~/.bashrc
[k8s@localhost ~]$ source ~/.bashrc

 

swap 끄는 방법 

[k8s@localhost ~]$ sudo swapoff -a
## Swap off 하기  swap 표기  
sudo swapoff -a
sudo sed -i.bak -r 's/(.+ swap .+)/#\1/' /etc/fstab

쿠버네티스 repository 등록 

 

EOF 여기에 뒷 내용을 다 담을 수 있음 (일종의 문법 같은....)

[k8s@localhost ~]$ sudo sed -i.bak -r 's/(.+ swap .+)/#\1/' /etc/fstab
[k8s@localhost ~]$ sudo su
[root@localhost k8s]# gg_pkg="packages.cloud.google.com/yum/doc" # Due to shorten addr for key
[root@localhost k8s]# 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=0
> repo_gpgcheck=0
> gpgkey=https://${gg_pkg}/yum-key.gpg https://${gg_pkg}/rpm-package-key.gpg
> EOF
[root@localhost k8s]# vim /etc/yum.repos.d/ku^C
[root@localhost k8s]# ^C
[root@localhost k8s]# vim  /etc/yum.repos.d/kubernetes.repo
[root@localhost k8s]# setenfore 0
bash: setenfore: command not found
[root@localhost k8s]# setenforce 0
## 쿠버네티스 보안 설정 
[root@localhost k8s]# sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

방화벽 설정

## 방화벽 확인 / 켜 있는 상태임 
[root@localhost k8s]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 금 2023-10-20 09:36:46 KST; 2h 1min ago
     Docs: man:firewalld(1)
 Main PID: 23815 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─23815 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid

10월 20 11:14:11 localhost.localdomain firewalld[23815]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t nat -D OUTPUT -m addrtype --...rectory

                                                          Try `iptables -h' or 'iptables --help' for more information....
10월 20 11:14:11 localhost.localdomain firewalld[23815]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t nat -D PREROUTING' failed: i...hain?).
10월 20 11:14:11 localhost.localdomain firewalld[23815]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t nat -D OUTPUT' failed: iptab...hain?).
10월 20 11:14:11 localhost.localdomain firewalld[23815]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t nat -F DOCKER' failed: iptab...t name.
10월 20 11:14:11 localhost.localdomain firewalld[23815]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t nat -X DOCKER' failed: iptab...t name.
10월 20 11:14:11 localhost.localdomain firewalld[23815]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -F DOCKER' failed: ip...t name.
10월 20 11:14:11 localhost.localdomain firewalld[23815]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -X DOCKER' failed: ip...t name.
10월 20 11:14:11 localhost.localdomain firewalld[23815]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -F DOCKER-ISOLATION' ...t name.
10월 20 11:14:11 localhost.localdomain firewalld[23815]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -X DOCKER-ISOLATION' ...t name.
10월 20 11:14:11 localhost.localdomain firewalld[23815]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -D FORWARD -i docker0 -o docker...hain?).
Hint: Some lines were ellipsized, use -l to show in full.
## 방화벽 지움 -> 재부팅 해도 방화벽 안올라옴 
[root@localhost k8s]# systemctl disable  firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

네트워크 관련 설정

iptables란? 

설정 해줌.

## 네트워크 설정 부분 
[root@localhost k8s]# cat <<EOF >  /etc/sysctl.d/k8s.conf
> net.bridge.bridge-nf-call-ip6tables = 1
> net.bridge.bridge-nf-call-iptables = 1
> EOF
[root@localhost k8s]# modprobe br_netfilter
[root@localhost k8s]# cat <<EOF >  /etc/sysctl.d/k8s.conf
> net.bridge.bridge-nf-call-ip6tables = 1
> net.bridge.bridge-nf-call-iptables = 1
> EOF
[root@localhost k8s]# modprobe br_netfilter

 

DNS 설정 

vim /etc/hosts

192.168.56.10 m-k8s
192.168.56.11 w1-k8s
192.168.56.12 w2-k8s
192.168.56.13 w3-k8s
## k8s에핑 보내보기 
[root@localhost k8s]# ping m-k8s
PING m-k8s (192.168.56.10) 56(84) bytes of data.
64 bytes from m-k8s (192.168.56.10): icmp_seq=1 ttl=64 time=0.054 ms
64 bytes from m-k8s (192.168.56.10): icmp_seq=2 ttl=64 time=0.116 ms
64 bytes from m-k8s (192.168.56.10): icmp_seq=3 ttl=64 time=0.056 ms
^C
--- m-k8s ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.054/0.075/0.116/0.029 ms

k8s 설치

# k8s 설치 
yum install kubectl-1.18.4 -y
yum install kubelet-1.18.4 -y
yum install kubeadm-1.18.4 -y

systemctl enable --now kubelet

 

## 서버 종료 하지만 MAC은 디스크 손상의 우려가 있어서 함부러 끄면 안됨. 
shutdown -h now

하고 설정된 상태를 이미지로 굽기 

하면 내 문서에 이미지 파일로 저장됨.  -끝- 

 

 

 


 

이미지 파일을 3개 복사 

* 각 컴퓨터에 접속한 뒤에 ip, hostname 변경 

### 각 가상 컴퓨터에 접속한 뒤에 ifcfg-enp0s8 파일을 vim 모드로 ip주소를 각각 수정 
m -> 10
w1 -> 11
w2 -> 12 

------

k8s-w1 
vim /etc/sysconfig/network-script/ifcfg-enp0s8
192.168.56.11

m-k8s

w1-k8s

w2-k8s

 각각 이름을 변경해줌, 

이름 변경해주는 명령어 

# hostname 
hostnamectl set-hostname [    ]

 

### 설정 후 restart 
systemctl restart network

### 이름 변경이 안된다면 exit

 

잘 실행되는지 확인 

kubeadm

 

 

### 클러스터를 초기화하고 설정하는 명령어 
### ip는 172.16.0.0/16 내에서 사용하고 192.168.56.10가 마스터 노드라는 의미 
sudo kubeadm init --token 123456.1234567890123456 --token-ttl 0 \
--pod-network-cidr=172.16.0.0/16 --apiserver-advertise-address=192.168.56.10

 

설정 파일 복사 및 소유권 부여 

 mkdir -p $HOME/.kube
 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 sudo chown $(id -u):$(id -g) $HOME/.kube/config

 

kubectl apply -f \
https://raw.githubusercontent.com/sysnet4admin/IaC/master/manifests/172.16_net_calico.yaml

 

[k8s@m-k8s ~]$ kubectl get nodes
NAME    STATUS   ROLES    AGE   VERSION
m-k8s   Ready    master   20m   v1.18.4
[k8s@m-k8s ~]$ kubectl get pods -n kube-system
NAME                                      READY   STATUS    RESTARTS   AGE
calico-kube-controllers-99c9b6f64-h6tpg   1/1     Running   0          30s
calico-node-5z46t                         1/1     Running   0          30s
coredns-66bff467f8-7hj4f                  1/1     Running   0          19m
coredns-66bff467f8-v27bx                  1/1     Running   0          19m
etcd-m-k8s                                1/1     Running   0          20m
kube-apiserver-m-k8s                      1/1     Running   0          20m
kube-controller-manager-m-k8s             1/1     Running   0          20m
kube-proxy-mnrms                          1/1     Running   0          19m
kube-scheduler-m-k8s                      1/1     Running   0          20m