Master Node와 Worker Node 생성 및 기본 설정

1. k8s-m 설치(ubuntu-20.04.2-live-server-amd64.iso)

2. k8s-m IP 주소 설정(netplan apply & shutdown) 및 스냅샷

3. k8s-m 클론떠서 k8s-w1, k8s-w2, k8s-w3 생성

4. 워커 노드 하나씩 접속하여 IP 주소 설정(netplan apply & shutdown) 및 스냅샷

 

* Master는 메모리 4GB, CPU 2개로 잡고 Worker는 메모리 2GB, CPU 1개로 잡는다.

 

kubeadm 으로 k8s 클러스터 생성 & CNI 설치

# 마스터 노드에서 클러스터 초기화 (K8s version v1.21.1)
kubeadm init --apiserver-advertise-address 192.168.79.200 --pod-network-cidr=172.16.0.0/16 --service-cidr 10.10.0.0/16

# 출력 내용 중 아래 2줄을 워커 노드에서 입력
kubeadm join 192.168.79.200:6443 --token t9fzfv.dxvtsz75l418ojf1 \
--discovery-token-ca-cert-hash sha256:055a3aef6fb8e930bff50da508007748fe97d3683c312c91c877069129930642


# k8s 관리를 위한 사용자(현재 root 사용자) 설정
echo $HOME
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config


# CNI - calico install : Pod 대역 자동으로 인식 (명령어 한 줄씩)
curl -O https://docs.projectcalico.org/manifests/calico.yaml
sed -i 's/policy\/v1beta1/policy\/v1/g' calico.yaml
kubectl apply -f calico.yaml

 

# calicoctl install

curl -o kubectl-calico -O -L "https://github.com/projectcalico/calicoctl/releases/download/v3.19.1/calicoctl"

chmod +x kubectl-calico

mv kubectl-calico /usr/bin


# Source the completion script in your ~/.bashrc file
echo 'source <(kubectl completion bash)' >>~/.bashrc
echo 'source <(kubeadm completion bash)' >>~/.bashrc

# alias kubectl to k
echo 'alias k=kubectl' >> ~/.bashrc
echo 'complete -F __start_kubectl k' >>~/.bashrc

 

* 본인 VMnet8(NAT)의 IP 대역대에 맞게 수정하여 적용

* 출력되는 해시값이 다 다르기 때문에 본인 커맨드 창에 뜬 명령어를 긁어야 함


노드 상태 확인 명령어들

watch -d -n 2 "kubectl get node"

kubectl get node
kubectl get node -w

kubectl-calico node status

kubectl describe node k8s-w1

kubectl get nodes -o wide

 

조금 시간이 지난 후 wide 명령어를 쳐서 STATUS가 전부 Ready 상태로 올라와 있으면 설정 성공.

이 4개의 서버는 calico라는 네트워크를 통해 하나의 클러스터로 묶여 있는 상태이다.

 

 


kubectl Commands Cheat Sheet

https://kubernetes.io/ko/docs/reference/kubectl/cheatsheet/

 

kubectl 치트 시트

이 페이지는 일반적으로 사용하는 kubectl 커맨드와 플래그에 대한 목록을 포함한다. Kubectl 자동 완성 BASH source <(kubectl completion bash) # bash-completion 패키지를 먼저 설치한 후, bash의 자동 완성을 현재

kubernetes.io

 

'IT > Kubernetes' 카테고리의 다른 글

[Lab] Kubernetes Pod & YAML file  (0) 2021.10.29
Kubernetes Components & Operation  (0) 2021.10.29
[Lab] Kubernetes Pod YAML file / Namespace  (0) 2021.10.28
Kubernetes 기능과 용어  (0) 2021.10.27

GNS3에서 라우터 터미널 실행

GNS3를 실행하고 좌측 상단의 회색 라우터 모양 버튼을 클릭한다.

추가해 놓은 c3745 모델을 클릭하고 드래그 앤 드랍으로 필드(?)에 꺼내 놓는다.

 

라우터를 우클릭하고 Start를 클릭해서 실행한다.

우측 상단의 R1 telnet localhost:5000 이 녹색 원으로 켜짐이 표시되면

다시 라우터 우클릭 -> Console 에 들어간다.

Would you like to enter the initial configuration dialog? [yes/no] :

가 나오면 Ctrl+C를 누르고 기다린다.

기다리다 보면 로드가 완료되고

Press RETURN to get started!

다이얼로그가 나오면 Enter키를 누른다.

Router> 프롬프트가 나오면 아래 명령어들을 실습해보자.


라우터 터미널은 configuration이 바로 적용되어서

실수할 경우 즉시 통신이 끊어지는 일이 발생하며 실무에서 이는 치명적이기 때문에

메모장에 미리 입력해 놓고 옮기는 등 조심해서 적용해야 한다.

 

탭 키로 자동 완성 가능

 

화면 클리어 명령은 없음 (엔터를 계속 쳐야 한다)


Router 터미널 명령어

*Bold체는 사람이 입력한 부분

 

 

명령어 도움말 보기

Router> en?

'en'으로 시작하는 명령어들을 확인할 수 있다.

이외에도 많은 사용법이 있으니 자주 사용해보자.

 

유저 / 관리자 모드 전환

Router> enable

Router# disable

Router>

 

Global Configuration

Router# configure terminal

Router(config)#

 

상위 프롬프트로 돌아가기

Router(config-if)# exit

Router(config)#

---------------------------

Router(config-if)# end

Router#

 

호스트 네임 변경

Router(config)# hostname R1

R1(config)#

 

Banner 설정 (Message Of The Day)

R1(config)# banner motd ^

Enter TEXT message.  End with the character '^'.

Hello, World!

^

R1(config)# end

R1# exit

-----------------------------------------------------

입력한 메시지를 배너로 확인할 수 있을 것이다.

 

장비의 하드웨어/소프트웨어(OS) 정보 확인

R1# show version

 

Running Config

R1# show running-config

------------------------------

확인 후 프롬프트로 돌아가려면 Ctrl+C

 

시간 정보 확인 및 수정

R1# show clock

*01:12:39.855 UTC Fri Mar 1 2002

R1# clock set 17:35:00 30 OCT 2021 (변경되었다는 로그 메시지가 나온다)

R1# show clock
17:35:09.515 UTC Sat Oct 30 2021

 

History 관련 명령어

R1# show history

--------------------------

또는 위, 아래 방향키를 이용해서 로그를 확인할 수 있다.

 

이 히스토리를 제 3자가 확인할 경우 보안 상의 문제가 생길 수 있기 때문에

실무에서는 히스토리 기능을 꺼놓는 것이 좋다.

--------------------------

R1# terminal history size 0

 

관리자 모드 접근 암호 설정

password를 사용할 시 running-config에서 그 값을 확인할 수 있고,

service password-encryption을 하더라도 그 알고리즘이 많이 알려져 있어

쉽게 복호화할 수 있기 때문에 그다지 효과가 없다.

그래서 해쉬 알고리즘을 사용해서 복호화할 수 없는 secret을 사용해야 한다.

 

end -> exit 명령어 입력 후 엔터로 진입하면 비밀번호 또는 유저네임의 변경 사항을 확인할 수 있다.

--------------------------------------------------------

R1(config)# enable secret [비밀번호 입력]

 

암호 삭제

R1(config)# no enable secret

 

콘솔 접근 암호 설정

R1(config)# line console 0 (원격지 접속이 아닌 로컬 접속의 콘솔 라인)

R1(config-line)# password [패스워드 입력]

R1(config-line)# login

 

암호 삭제

R1(config-line)# no login

R1(config-line)# no password

 

콘솔 접근 계정 설정

일반 유저 계정

R1(config)# username user01(유저네임) secret cisco(비번)

 

관리자 계정

R1(config)# username admin privilege 15(관리자 권한) secret cisco

 

자동 로그아웃

R1(config-line)# exec-timeout 3(분) 0(초)

-------------------------

해당 시간이 지나면 터미널에서 자동으로 로그아웃 된다.

0 0으로 값을 넣으면 자동 로그아웃 비활성화이다.

 

로그 메시지 분리

R1(config-line)# logging synchronous

------------------------

end 명령어 입력 시에 나오는 로그 메시지가

입력 중이던 명령어와 합쳐져 보일 수 있는데 그걸 방지해준다.

 

Configuration 저장

R1# copy running-config startup-config

 

IP 인터페이스 변경 및 확인

R1# show ip interface

R1# show ip interface brief (간략하게)

 

R1(config)# interface f0/0
R1(config-if)# ip add 192.168.10.10 255.255.255.0
R1(config-if)# no shutdown

R1(config-if)# end

 

R1# show ip interface brief

 

SSH 설정(라우터 2개)

서버 라우터 설정

R1(config)#ip domain-name netsec.kr
R1(config)#crypto key generate rsa general-keys modulus 1024

 

R1(config)#username admin privilege 15 secret cisco

R1(config)#line vty 0 4

R1(config-if)#transport input ssh

R1(config-if)#login local

R1(config-if)#end

R1#show running-config

--------------------------------

클라이언트에서 접속

R2#ssh -l admin 192.168.10.10

(이후 패스워드 입력)

SSH의 Version은 3가지가 존재하는데 v1.0, v1.9, v2.0이 있다.

이 중 v2.0이 보안적으로 안정적이어서 좋다고 한다.

+ Recent posts