티스토리 뷰

카테고리 없음

kubespray 설치 진행

미니대왕님 2022. 8. 2. 02:19

Kubespray로 쿠버네티스 설치하기

 

windows os에서 vagrant 설치하기

1. virtualBox 다운로드

먼저, vagrant 실행에 필요한 버츄얼 박스를 다운로드 해준다.

www.virtualbox.org/wiki/Downloads

 

Downloads – Oracle VM VirtualBox

Download VirtualBox Here you will find links to VirtualBox binaries and its source code. VirtualBox binaries By downloading, you agree to the terms and conditions of the respective license. If you're looking for the latest VirtualBox 6.0 packages, see Virt

www.virtualbox.org

운영체제에 맞는 걸 다운로드 해주면 된다.

windows hosts를 다운로드 해주자

 

2. vagrant 다운로드

https://www.vagrantup.com/downloads.html

 

Downloads | Vagrant by HashiCorp

Vagrant enables users to create and configure lightweight, reproducible, and portable development environments.

www.vagrantup.com

 

64bit를 사용 중이므로 64bit를 다운받자.

몇비트인지 모르겠다면 내PC > 오른쪽 마우스 클릭 > 속성 에서 확인할 수 있다.

 

우분투 환경 설치하기

 베이그런트 설치가 되면 재부팅 후에 cmd 창을 열어준다.

 

ubuntu 우분투를 내려받을 디렉토리 생성

>> cd ..

cd 명령으로 c드라이브 디렉토리로 이동한다.

>> mkdir vagrant

우분투 환경을 내려받을 폴더 vagrant 를 만들어준다.

 

vagrant 가상 서버를 구동하기 위한 준비하기

>> cd vagrant

만든 폴더 안으로 들어간다.

 

다음 명령어를 실행하면 vagrantfile이 생성된다.

>> vagrant init ubuntu/bionic64

*. vagrant up

네트웍 연결이 안될경우 아래와 같이 체크해봅니다.

https://tommypagy.tistory.com/238

 

VirtualBox 리눅스 서버 SSH로 연결하기

VirtualBox 리눅스 서버 SSH로 연결하기 이 포스트에서는 버추얼박스(VirtualBox)로 구현한 가상 리눅스 서버를 SSH로 연결하는 방법에 대해 포스팅합니다. 참고로 이 기능을 사용하려면 OpenSSH가 필요하

tommypagy.tistory.com

 

준비된 아이피

192.168.202.3
192.168.202.4
192.168.202.5

 

 

 

 

# vi /etc/ssh/sshd_config

PermitRootLogin : root 사용자의 로그인 허용 여부. (yes, prohibit-password, forced-commands-only, no) 중에서 설정해야 합니다. 설정하지 않으면 prohibit-password 가 됩니다.
yes 로 설정하세요.

PasswordAuthentication : 비밀번호 로그인 허용 여부. (yes, no). 설정하지 않으면 yes 가 됩니다.
yes 로 설정하세요.

 

서비스를 재시작 해줍니다. 

$ ssh-keygen -t rsa

준비된 아이피에서 진행해봅니다.

apt-get install sshpass

 

 

아래와 같이 192.168.202.3 4 와 3 에  SSH-copy 를 시도 합니다.

ssh-copy-id root@192.168.202.3

ssh-copy-id root@192.168.202.4

ssh-copy-id root@192.168.202.5

$ apt-get install python3-pip 파이썬을 설치합니다.

$apt install git 깃 설치

*git 설치후 가볍게 스냅샷 한장씩 찍어줍니다.

#git clone https://github.com/kubespray/kubespray.git

#cd kubespray

$cat requirements.txt

vi inventory/sample/inventory.ini

[all]
k8s-master ansible_host=192.168.202.3  ip=192.168.202.3 etcd_member_name=etcd1
k8s-node1  ansible_host=192.168.202.4  ip=192.168.202.4
k8s-node2  ansible_host=192.168.202.5  ip=192.168.202.5


[kube_control_plane]
#[kube-master]
k8s-master
# node1
# node2
# node3

[etcd]
k8s-master
# node1
# node2
# node3

[kube-node]
k8s-node1
k8s-node2
# node2
# node3
# node4

[calico-rr]

[k8s-cluster:children]
kube-master
kube-node
calico-rr

$apt install python-pip

인벤토리 설정하기 

cd inventory/sample

 

 

$cp -rp sample/ k8s_cluster

vi k8s_cluster/inventory.ini 확인해 봅니다.

$cd /home/master/kubespray

$pip install -r requirements.txt

* 증상: pip install시 에러 Command python setup.py egg_info failed with error code 1 

해결: pip setuptools 재설치

sudo -H pip3 install --upgrade --ignore-installed pip setuptools
pip install --upgrade pip==20.3
pip install --upgrade pip

가볍게 bash를 눌러줍니다.

$bash 

 다시 한번 시도!!

$cd /home/master/kubespray

$pip install -r requirements.txt

 

 

https://github.com/pypa/pip/issues/10028

 

root warning is spurious in single purpose pyenv pythons meant for root apps · Issue #10028 · pypa/pip

In our test kit we use pyenv in a Docker to load a set of pythons and do various things. None of them are really system pythons, so the relatively recent orange warning, "WARNING: Running pip ...

github.com

 

$ansible-playbook -i inventory/k8s_cluster/inventory.ini cluster.yml

 

설치는 약 20분 정도 소요가 됩니다. 

kubectl get node

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

 

kubectl 치트 시트

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

kubernetes.io

 

 


Adding nodes with Kubespray

New Node(노드 추가 절차)

vi /etc/hosts 업데이트

# Ansible inventory hosts BEGIN
192.168.202.25 k8s-master.cluster.local k8s-master
192.168.202.26 k8s-node1.cluster.local k8s-node1
192.168.202.27 k8s-node2.cluster.local k8s-node2
192.168.202.28 k8s-node3.cluster.local k8s-node3
# Ansible inventory hosts END
192.168.0.2 dockerhub.kubekey.local

SSH key 복사

Ansible 호스트에서 새로 추가된 노드로 password 없이 ssh 접근이 가능하도록 설정한다.

[centos@deployer tacoplay]$ ssh-copy-id k8s-node1
[centos@deployer tacoplay]$ ssh-copy-id k8s-node2
[centos@deployer tacoplay]$ ssh-copy-id k8s-node3

인벤토리 파일 업데이트

인벤토리 파일에 새로 추가된 노드 정보를 넣어 준다.

vi inventory/k8s_cluster/inventory.ini

[all]
k8s-master ansible_host=192.168.202.25  ip=192.168.202.25 etcd_member_name=etcd1
k8s-node1  ansible_host=192.168.202.26  ip=192.168.202.26
k8s-node2  ansible_host=192.168.202.27  ip=192.168.202.27
k8s-node3  ansible_host=192.168.202.28  ip=192.168.202.28

#[kube_control_plane]
[kube-master]
k8s-master
# node1
# node2
# node3

[etcd]
k8s-master
# node1
# node2
# node3

[kube-node]
k8s-node1
k8s-node2
k8s-node3
# node2
# node3
# node4
[compute-node]
k8s-node3

[new-nodes]
k8s-node3

[calico-rr]

[k8s-cluster:children]
kube-master
kube-node
calico-rr

Scale playbook 실행

cd /home/master/kubespray
& ansible-playbook -b -i inventory/k8s_cluster/inventory.ini scale.yml --limit etcd,new-nodes

*  24H 인증만료 오류발생시

reset.yml 을 실행
ansible-playbook --flush-cache -i inventory/mycluster/hosts.yml reset.yml --become -u root
한 다음 cluster.yml 을 실행하십시오.
ansible-playbook --flush-cache -i inventory/mycluster/hosts.yml cluster.yml --become -u root

ansible-playbook --flush-cache -i inventory/mycluster/hosts.yml cluster.yml --become -u roo

 

node3 확인


kubectl 치트 시트

이 페이지는 일반적으로 사용하는 kubectl 커맨드와 플래그에 대한 목록을 포함한다.

Kubectl 자동 완성

BASH

# bash-completion 패키지를 먼저 설치한 후, bash의 자동 완성을 현재 셸에 설정한다
# 자동 완성을 bash 셸에 영구적으로 추가한다

source <(kubectl completion bash) 
echo "source <(kubectl completion bash)" >> ~/.bashrc

또한, kubectl의 의미로 사용되는 약칭을 사용할 수 있다.

alias k=kubectl
complete -F __start_kubectl k

ZSH

# 현재 셸에 zsh의 자동 완성 설정
# 자동 완성을 zsh 셸에 영구적으로 추가한다.

source <(kubectl completion zsh)  
echo "[[ $commands[kubectl] ]] && source <(kubectl completion zsh)" >> ~/.zshrc

--all-namespaces 에 대한 노트

--all-namespaces를 붙여야 하는 상황이 자주 발생하므로, --all-namespaces의 축약형을 알아 두는 것이 좋다.

kubectl -A

Kubectl 컨텍스트와 설정

kubectl이 통신하고 설정 정보를 수정하는 쿠버네티스 클러스터를 지정한다. 설정 파일에 대한 자세한 정보는 kubeconfig를 이용한 클러스터 간 인증 문서를 참고한다.

kubectl config view # 병합된 kubeconfig 설정을 표시한다.

# 동시에 여러 kubeconfig 파일을 사용하고 병합된 구성을 확인한다
KUBECONFIG=~/.kube/config:~/.kube/kubconfig2

kubectl config view

kubectx란?

다중 클러스터 사용 시 클러스터 context 전환을 쉽게 해 주는 툴이다.

 

kubens란?

쿠버네티스 클러스터 내에서 네임스페이스 변환을 쉽게 해 주는 툴이다.

 

kubectx / kubens 설치하기

Github URL 👉 https://github.com/ahmetb/kubectx

 

kubectx

$ wget https://github.com/ahmetb/kubectx/releases/download/v0.9.4/kubectx
$ sudo install kubectx /usr/local/bin

설치 확인

$ which kubectx      
/usr/local/bin/kubectx

 

kubens

$ wget https://github.com/ahmetb/kubectx/releases/download/v0.9.4/kubens
$ sudo install kubens /usr/local/bin

설치 확인

$ which kubens
/usr/local/bin/kubens

 

댓글