티스토리 뷰
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
- Total
- Today
- Yesterday
- 앤시블
- 버쳐박스
- startup 에러
- [오라클 튜닝] instance 튜닝2
- 오라클
- 오라클 인스턴트클라이언트(InstantClient) 설치하기(HP-UX)
- MSA
- ubuntu
- directory copy 후 startup 에러
- 트리이스
- 쿠버네티스
- 오라클 트러블 슈팅(성능 고도화 원리와 해법!)
- 설치하기(HP-UX)
- CVE 취약점 점검
- 테라폼
- 코로나19
- 오라클 홈디렉토리 copy 후 startup 에러
- (InstantClient) 설치하기(HP-UX)
- 5.4.0.1072
- 튜닝
- [오라클 튜닝] sql 튜닝
- 우분투
- 여러서버 컨트롤
- pod 상태
- K8s
- 커널
- Oracle
- ORACLE 트러블 슈팅(성능 고도화 원리와 해법!)
- 스토리지 클레스
- 키알리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |