Hacker News Digest 메일을 보다가 자극적인 문구를 보고 살펴보게 된 article이다.

 

 

WTF Python: Exploring and understanding Python through surprising snippets

번역해보면 "빌어먹을 파이썬: 놀라운 코드 조각을 통해 파이썬을 탐험하고 이해해보자" 라고 하면 될라나?!

 

 

# 링크 : github.com/satwikkansal/wtfpython

 

satwikkansal/wtfpython

What the f*ck Python? Contribute to satwikkansal/wtfpython development by creating an account on GitHub.

github.com

 

실제 사이트에 가보면 아래와 같은 문구가 반긴다.

 

 

What the f\*ck Python! 😱

 

 

아무래도 Python 공부하면서 고생을 많이 하신 분인가 보다.

 

 

중국어와 특이하게도 베트남어 번역이 있다.

자동 번역기로라도 한국어를 PR 해볼까?!라는 생각이 들었다. 음... 고민중...

 

 

Python 왕초보에게는 별 도움이 되지 않을 것 같고, (괜히 햇갈릴 수 있을 내용이 많다!)

어느정도 다룰줄 아는 분이라면 여기에 있는 내용을 살펴보면 재미있을 것 같다.

 

 


>>> a = "wtf"
>>> b = "wtf"
>>> a is b
True

>>> a = "wtf!"
>>> b = "wtf!"
>>> a is b
False

 

 

위와 같은 상황이 이해가 되나?! ^^

반응형



최근 주력으로 공부하고 있는 것은 Kubernetes와 Machine-Learning이다.

특히 현재 업무와도 관련이 있어서 더 깊이 보고 있는 것이 바로 Kubernetes인데, 이와 관련된 새로운 책 하나를 살펴보게 되었다.



취향 저격!


요즘 IT 서적들은 표지도 너무 잘 만들고, 타이포그라피도 너무 잘 하는 것 같다.

그리고, 왠지 모르게 레벨업 욕구를 불러일으키게 "15단계"라니...




희한하게 요즘 보는 책들의 지은이가 계속 일본인이네...

지은이가 IBM 클라우드 소속이라서, 책에서도 IBM 클라우드를 소개했구나 ... ^^



15단계로 구성되었다고 하지만,

1장은 단계에 속하지 않은 사전 학습 내용으로 되어있다.



2장부터 1단계 시작이다.



그런데, 살펴보면 다른 책에서는 잘 보지 못하는 재미있는 항목이 보인다.



각 Step의 뒷 부분을 보면, "참고 자료"를 하나의 섹션으로 넣어 놓았다.


실제 내용을 보면 아래와 같이 되어있다.



추가적으로 공부를 더 해보고 싶은 경우, 이 내용을 참조하면 많은 도움이 될 것 같다.



책 내용은 깔끔하다.

다만, Why 에 대한 설명을 해주는 책은 아니고, How 위주로 설명을 해주는 책으로 보인다.




설명도 잘 되어 있고, 실행 예도 잘 보여주고 있다.


다만, 15단계에 따라 하나씩 직접 해보면서 어떤 명령어들을 사용하는지 배우기에는 적합하지만,

왜 이런 구성을 가지고 있는지 등에 대해서 파악하려면 다른 책을 보는 것이 나을 것 같다.


직접 몸으로 부딪히면서 배우는 것을 좋아하시는 분들에게 추천할 수 있는 책이다.




※ 제이펍 서평단 활동을 위해 지급 받은 도서에 대한 리뷰입니다.

반응형


최근 회사에서 업무로도 파이썬을 자주 사용하게 되고, 개인적으로 하는 작업에서도 파이썬을 자주 사용한다.

하지만, 대부분 CLI 환경으로만 사용해왔지, GUI 환경이 필요한 경우에는 다른 언어를 사용하곤 했다.


더구나, 게임 개발을 할 때 파이썬을 사용한다고는 더더욱 생각하지 못했다.


그런데, 이렇게 파이썬으로 게임 개발을 알려준다는 책이 등장했다 !!



아니, 그런데 표지에 저런 캐릭터를 ... ?



친절하게 학습을 도와준다니~ 고마워요 !!!




역시나, 일본 출신의 저자다! ^^

거기에다가 남코, 닌텐도, 코나미 등에서 근무를 했다니... 와우~!!




게임 개발이 주요 컨텐츠이지만,

파이썬이라는 언어에 대해서도 충실한 책이다.



Chapter1 에서부터 Chapter4 까지 기본적인 문법들을 설명하고,

Chapter5 에서는 CLI로 간단하게 게임 비슷한 것을 만들어 본 다음에

Chapter6 부터 본격적으로 GUI 환경으로 게임 개발을 설명해 주고 있다.



입문편이긴 하지만,

그래도 그럴듯한 모습의 게임도 설명해준다.



게임 개발을 한다고 하면 어떤 것들을 해야 하는지 파악할 정도는 된다.





이 책의 특징은 앞에서도 말했지만,

예쁜 2D 캐릭터들을 사용해서 친근한 분위기를 만들어준다는 것이다.



캐릭터 설명도 이렇게 해준다.

각 캐릭터의 배경 설정도 존재 한다.



각 챕터의 앞에서는 이렇게 요약 설명도 해주고,



챕터 중간에 알면 좋은 내용들을 설명도 해준다.




단순하게 2D 캐릭터만 있다고 좋은 것이 아니라

설명에 필요한 이미지들이 colorful 하면서도 너무나 보기 좋게 삽입되어 있다.



이미지나 색상이 너무나 멋들어지게 들어있어서 책을 보면서 계속 기분이 좋았다.







이런 책을 공부할 때 중요한 것 中 하나가 바로 개발 환경을 갖추는 것이다.

책에서는 Windows & Mac 에서 필요한 환경 설치하는 것을 설명해주고 있다.




Ubuntu(우분투)와 같은 리눅스 환경에서는 해볼 수 없는 것일까?


아니다~!! 할 수 있다~!! ^^



Ubuntu Desktop 18.04 환경을 기준으로 설명을 하면 아래와 같다.



표준 사항으로 Ubuntu Desktop 18.04 버전을 설치했다면 Python 2.x 버전이 설치되어 있을 것이다.

하지만, 이 책에서는 Python 3.x 버전으로 되어 있기 때문에, Python 버전부터 맞춰야 한다.



1. Python 버전 변경하기 ( 2.x → 3.x )


    - python3 설치 및 update-alternatives 이용한 기본 실행 버전 설정해주기

    - https://www.whatwant.com/entry/Python3-환경-만들기-버전-변경하기-in-Ubuntu



2. GUI library 설치하기


    - 이 책에서 기본으로 사용하는 GUI library는 tkinter 이다.


    - $ sudo apt install python3-tk



3. VSCode (Visual Studio Code) 설치하기


    - 이 책에서는 IDLE를 이용해서 python을 사용하지만, 최근 트렌드에 맞춰서 VSCode를 사용해보자.


    - $ wget https://code.visualstudio.com/sha/download\?build\=stable\&os\=linux-deb-x64 -o vscode.deb

    - $ sudo dpkg --install vscode


    - VSCode 실행 후 "Python Extension" 인스톨




이 책에서 사용하는 예제 코드는 아래 주소에서 확인해볼 수 있다.


    - https://github.com/Jpub/PythonGame_1




해당 소스 코드를 내려 받아서 실행하면 아래와 같은 화면을 볼 수 있다.





개인적으로 이 책은

가볍게 살펴보기에 너무 너무 좋았다.


설명도 친절하게 너무나 잘되어 있었고

책 구성도 보기 편하게 너무나 잘 되어 있어서 인지 책을 살펴보는데 별 부담이 없었다.

그리고 소스 코드도 그냥 바로 실행만 하면 테스트해볼 수 있게 되어 있어서 너무 좋았다.




이 책을 추천하고 싶은 경우는,

가벼운 게임 개발을 경험해 보고 싶거나 파이썬을 이용해서 GUI 결과물을 만들어 보고 싶은 경우 기꺼이 추천할 수 있을 것 같다.




아쉬운 부분을 찾아보고 싶은데....

사실 개인적으로 아쉬운 부분을 찾아볼 수가 없었다 ^^ (개취 존중!! ^^)

음... 굳이 꼽아보자면, 파이썬 기본에 대한 소개를 굳이 4개 챕터에 걸쳐서 해야했는지... 정도!?




※ 제이펍 서평단 활동을 위해 지급 받은 도서에 대한 리뷰입니다.

반응형


재미있는 이미지와 폰트로 호기심을 확 잡아 끌었던 책을 이번 기회에 보게 되어 너무 좋았다.


같은 부서에 있는 신입 사원의 책상 위에 있던 이 책을 보면서 재미있겠다라고 생각만 하다가

드디어 책을 받아서 보는데... 기존에 봤던 표지와 조금 달라서 이상하다 여겨졌는데,

이번에 받은 책은 "개정판"이란다.



이제 한 달 조금 넘은 따끈따끈한 책이다 !!!


IT 도서 중에서 그림으로 쉽게 설명한 책들을 보면 일본에서 만들어진 책들이 많았는데,

역시나 이 책도 지은이를 보니 made in japan 이었다.



여러 명이 각각의 챕터를 쓰고 그것을 엮어서 만들어졌다.

지은이들 간의 기본적인 인맥은 '일본 오라클'에서 같이 일했던 동료 사이인 것으로 보인다.



옮긴이의 이력을 보면... 네덜란드, 일본, SK, 싱가포르... 부럽다. 나도 글로벌하고 싶은데... ^^



이 책에서 설명해주고 있는 전체 아키텍처에 대한 그림이다. (http://bit.ly/2J6lH22)

일반적인 웹서비스에서 필요로 하는 서버 구성(Front-end, Back-end, DB)을 기본으로 설명을 해주고 있다.



단순한 서버 HW에 대한 설명에서 그치는 것이 아니라

이러한 인프라를 운영할 때 알아야 할 다양한 요소에 대해서도 알차게 설명을 해준다.



내가 있는 팀에 신입 사원이 온다고 하면

여기 이 책에 있는 내용들을 최소한 한 번 즈음 읽고,

내용을 자세히 알지는 못한다고 하여도 대략적인 전체적인 흐름은 익히고 왔으면 좋겠다.



위에 써 있는 내용들을 보면서 대강이라도 어떤 말인지 이해할 수 있는 수준이면 좋겠다.


신입 개발자들에게만 추천하고픈 책은 아니다.

나름 이 바닥에서 적지 않은 기간 동안 일하고 있는 나에게도 많은 도움이 되는 책이다.


주로 어떤 상황에 접하게 되어 주먹구구식으로 알게 된 내용들을 체계적으로 살펴보고 익히기에 정말 괜찮은 책인 것 같다.

말 그대로 어설프게 또는 잘못 알고 있었던 내용들을 바로 잡을 수 있는 좋은 교재이기도 한 것 같다.


"IT에 종사하는 사람이라면 반드시 읽어야 할 책!

 IT 인프라 전반에 대한 상식을 그림으로 쉽게 이해한다!"


책에도 쓰여져 있는 문구이지만, 정말 말 그대로 "IT 상식"을 알려주는 기본서라는 느낌이다.


지금 부서에 있는 신입 사원에게도 꼭 개정판으로 읽어보도록 추천할 것이고,

앞으로 오게 될 신입 개발자에게는 이 책을 공부해서 세미나 발표하도록 시킬 작정이다.



다만, 몇 가지 아쉬운 점도 있었다.


최근 IT 인프라 관련하여 주 트렌드가 되고 있는 가상화나 클라우드에 관련된 내용들도 있으면 좋겠는데

가상화에 대한 내용이 없는 것은 아니지만, 고작 6페이지 분량밖에 없었고,

클라우드와 관련된 사항은 다른 것들을 설명하면서 언급되는 정도이다.

클라우드 환경을 중심으로 하는 서버 구성이나 네트워크, 인증 등에 대한 내용으로 2권이 나왔으면 좋겠다.


그리고,

이왕 그림으로 공부하는 책인데... 그림이 좀 더 colorful 했으면 더더욱 좋지 않았을까 하는 생각을 해본다.

검은색과 파란색을 가지고 표현된 그림을 보면 쪼오오오끔 아쉬웠다.



※ 제이펍 서평단 활동을 위해 지급 받은 도서에 대한 리뷰입니다.

반응형


개인적으로 SSH Client는

Ubuntu Terminal에서 직접 사용하는 것이 가장 편하다 보니

회사에서도 Main PC는 그냥 Ubuntu를 설치하고

Windows는 VirtualBox로 설치해 놓고 사용하고 있다.


하지만, 집에서는 여러가지 이유로 Main PC를 Windows10으로 사용할 수 밖에 없어서

SSH Client를 사용하기 위해서 VirtualBox로 Ubuntu 설치해놓고 그것을 이용하고 있다.


SSH Client를 필요로 하는 개발자라면 최소한 1번 이상은 사용해봤을 Putty가 있기는 하지만

개인적으로 썩 마음에 들지 않기에

Windows 환경에서 쓸만한 SSH Client를 계속 찾아보고 있다.


그러던 中 눈에 띈 Xshell !!



안타깝게도 Open-source 프로젝트는 아니다.

하지만, 개인 사용자에게는 무료 라이선스를 제공하고 있다.



이름과 이메일만 작성하면 다운로드 받을 수 있는 주소를 보내준다.



집에서만 사용하는 용도라면 충분히 훌륭하다.

그리고 난 착하게도(^^) 이렇게 포스팅을 하고 있으니 착한 사용자!!!



그냥 다운로드 받아서 설치하면 된다.



설치도 그냥 슉슉~



화면도 깔끔하다.



oh-my-zsh 폰트도 안깨지고 잘 나온다.

더 마음에 드는 것은 창 크기를 조절하면 그에 맞춰서 터미널도 반영된다는 것이다.



Xshell의 장점이자 단점인 것 같은데...

ANSI Color를 직접 컨트롤 하기 때문인 것으로 추정되는 원인으로 인하여

요즘 유행하는 bpytop을 실행하면 위 이미지처럼 배경색이 깨져서 나온다.


뭐 조금 아쉬운 부분은 있지만,

VirtualBox 띄워서 터미널 사용하는 것보다는 조금 가볍게 사용할 수 있다는 측면에서 충분히 만족한다.

그리고 여러 개의 창을 띄울 때에도 편하게 할 수 있어서 충분히 좋다.


반응형


요즘 몇 일 갑자기 유행하고 있는 bpytop



뭔가 멋지다!!!



Debian 계열에서 아래와 같이 설치가 된다고 했는데...


$ sudo apt install bpytop


내 Ubuntu 18.04에서는 안되었다.


그래서 설치~


$ sudo apt install python3 python3-pip


$ python3 -m pip install psutil


$ git clone https://github.com/aristocratos/bpytop.git


$ cd bpytop


$ sudo make install


실제 빌드가 되는 모습은 안보인다.

그냥 한 번에 뭔가 휙~ 그냥 끝


$ bpytop



우아~ 내거 VirtualBox에서 살고 있는 Ubuntu에서도 된다~!!!!


반응형

'잘난놈되기' 카테고리의 다른 글

kubectl 설치 (in Ubuntu)  (0) 2021.08.30
한글 지원되는 Ubuntu Docker Image 만들기  (0) 2021.07.27
하드디스크 용량 분석 (SpaceSniffer)  (0) 2020.12.28
Docker Hub 활용  (0) 2020.11.14
SiteMap  (0) 2020.08.30


컴퓨터를 새로 조립하면서

NVME 타입으로 C드라이브를 넣어주기로 하면서 512GB 용량으로 정했었다.


데이터 저장은 4TB 짜리 D드라이브를 넣어줄 것이기 때문에

C드라이브는 512GB 정도면 충분할 것이라 믿었는데...


갈수록 줄어드는 C드라이브의 여유 공간...


이제는 20GB도 남지 않았다.


대체 뭐가 나의 C드라이브를 잡아먹고 있는 것일까?!


그래서 찾아본 하드디스크 용량 분석 프로그램 ...




SpaceSniffer


  - 위키피디아에도 등록이 되어있는 아이로 골라봤다.

    . https://en.wikipedia.org/wiki/SpaceSniffer



  - 홈페이지도 있다.

    . http://www.uderzo.it/main_products/space_sniffer/



  - 2016년도 버전이 끝이라서 좀 우려스럽지만, 그래도 다운로드 받아서 실행해보자~!!

    . 다운로드 받아서 압축 풀고 실행하면 바로 실행된다.

    . 실행할 때 "관리자 권한으로 실행"을 해주는 것이 좋다. 파일 읽을 때 권한 관련해서 경고 받기 귀찮으면... ^^



  - 흐음... 뭔가 덩치 큰 아이들이 꽤 있군... 어?! pagefile.sys 이거 싫은데...

    . 컴퓨터 맞출 때 32GB 메모리를 넣었는데, 굳이 이걸... 그래서 가상메모리 사용안하도록 했더니...



  - 앗싸~ 40GB 정도의 여유 공간 확보했다.... 음... 다음에 용량 부족하면 게임 좀 지워야겠네... ㅠㅜ



반응형

'잘난놈되기' 카테고리의 다른 글

한글 지원되는 Ubuntu Docker Image 만들기  (0) 2021.07.27
bpytop 설치 (Ubuntu 18.04)  (2) 2020.12.31
Docker Hub 활용  (0) 2020.11.14
SiteMap  (0) 2020.08.30
Minikube 실습 - Pod 생성 (docker build & kubectl run & service)  (0) 2020.08.22

 

 

Kubernetes 설치를 해보자 한다.

 

 

Master Node & Worker Node 각 1대씩 구성을 하고자 한다.

 

물리적으로 분리된 BareMetal 구성을 하려고 했지만,

자유로운 설정을 통해 학습해보기 위해서 VirtualBox로 우선 진행해 보았다.

 

 

정말 훌륭한 레퍼런스는 아래 링크와 같다 !!!

  - https://medium.com/finda-tech/overview-8d169b2a54ff

 

 

 

 

1. Master & Worker Node H/W

 

  - Prerequisite

 

구분  CPU Memory Storage 
 Master 2 core 3 GB 30 GB
 Worker 2 core 2 GB 30 GB

 

  - VirtualBox

 

구분  CPU Memory Storage 
 Master 2 core 4 GB 50 GB
 Worker 2 core 4 GB 50 GB

 

    . 네트워크는 NAT가 아니라 Bridge로 잡아줬다. (공유기 환경)

 

 

 

 

 

2. Master & Worker Node S/W

 

  - Ubuntu 20.04 LTS Server 설치를 하면서, 기본적인 환경 설치는 아래 링크와 동일하게 구성하였다.

    . https://www.whatwant.com/entry/notebook-ubuntu-server

 

  - Docker 까지는 미리 설치해두었다. 설치 방법은 아래 링크와 같이 진행하였다.

    . https://www.whatwant.com/entry/Docker-Install-Ubuntu-Server-2004

 

    . kubernetes validated versions이 따로 있으니 이것에 맞추는 것을 추천한다.

 

 

 

 

3. Swap off

 

  - kubelet에서 swap을 지원하지 않기 때문에, Master/Worker 모두 swap 기능을 꺼야 한다.

 

$ sudo swapoff -a

 

  - 영구적으로 기능을 끄기 위해서는 추가 작업도 해줘야 한다.

 

$ sudo nano /etc/fstab

 

  - swap 부분을 찾아서 주석 처리 해주면 된다.

 

#/swap.img  none    swap    sw  0   0

 

 

 

 

4. cgroup driver 설정

 

  - 이미 설치된 docker에 대해서 cgroup driver를 변경해줘야 한다.

 

$ docker info

 

 

  - 지금은 "cgroupfs"로 설정되어 있는 것을 볼 수 있다. "systemd"로 변경해보자.

 

$ sudo nano /etc/docker/daemon.json

 

{

    "exec-opts": ["native.cgroupdriver=systemd"],

    "log-driver": "json-file",

    "log-opts": {

        "max-size": "100m"

    },

    "storage-driver": "overlay2"

}

 

$ sudo mkdir -p /etc/systemd/system/docker.service.d

 

$ sudo systemctl daemon-reload

 

$ sudo systemctl restart docker

 

 

  - "cgroup driver"가 잘 변경된 것을 볼 수 있다.

 

 

 

 

5. Kubernetes 기본 패키지 설치

 

  - Master/Worker Node 모두 [ kubeadm, kubelet, kubectl ] 3개의 패키지가 설치되어야 한다.

    . 부수적으로 [ kubernetes-cni, cri-tools ] 2개 패키지도 필요하다.

 

  - 아래에서 최신 버전의 주소(파일명) 확인 (16.04 이후 버전 모두 동일)

    . https://packages.cloud.google.com/apt/dists/kubernetes-xenial/main/binary-amd64/Packages

 

$ wget https://packages.cloud.google.com/apt/pool/cri-tools_1.13.0-01_amd64_4ff4588f5589826775f4a3bebd95aec5b9fb591ba8fb89a62845ffa8efe8cf22.deb

 

$ wget https://packages.cloud.google.com/apt/pool/kubeadm_1.20.1-00_amd64_7cd8d4021bb251862b755ed9c240091a532b89e6c796d58c3fdea7c9a72b878f.deb

 

$ wget https://packages.cloud.google.com/apt/pool/kubectl_1.20.1-00_amd64_b927311062e6a4610d9ac3bc8560457ab23fbd697a3052c394a1d7cc9e46a17d.deb

 

$ wget https://packages.cloud.google.com/apt/pool/kubelet_1.20.1-00_amd64_560a52294b8b339e0ca8ddbc480218e93ebb01daef0446887803815bcd0c41eb.deb

 

$ wget https://packages.cloud.google.com/apt/pool/kubernetes-cni_0.8.7-00_amd64_ca2303ea0eecadf379c65bad855f9ad7c95c16502c0e7b3d50edcb53403c500f.deb

 

  - 설치도 진행하자

 

$ sudo apt-get install socat conntrack ebtables

 

$ sudo dpkg --install ./kubernetes-cni_0.8.7-00_amd64_ca2303ea0eecadf379c65bad855f9ad7c95c16502c0e7b3d50edcb53403c500f.deb

 

$ sudo dpkg --install ./kubelet_1.20.1-00_amd64_560a52294b8b339e0ca8ddbc480218e93ebb01daef0446887803815bcd0c41eb.deb

 

$ sudo dpkg --install ./cri-tools_1.13.0-01_amd64_4ff4588f5589826775f4a3bebd95aec5b9fb591ba8fb89a62845ffa8efe8cf22.deb

 

$ sudo dpkg --install ./kubectl_1.20.1-00_amd64_b927311062e6a4610d9ac3bc8560457ab23fbd697a3052c394a1d7cc9e46a17d.deb

 

$ sudo dpkg --install ./kubeadm_1.20.1-00_amd64_7cd8d4021bb251862b755ed9c240091a532b89e6c796d58c3fdea7c9a72b878f.deb

 

 

 

 

6. Master Node 셋업

 

  - kubeadm을 이용하여 Master Node 셋업을 진행하자.

 

  - Master Node의 IP를 확인하자

 

$ ifconfig

 

  - 이제 셋업 시작~!! (뒤의 IP는 방금 확인한 IP로 교체!!)

 

$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.100.119

 

❯ sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.100.119

[init] Using Kubernetes version: v1.20.1

[preflight] Running pre-flight checks

[WARNING SystemVerification]: this Docker version is not on the list of validated versions: 20.10.1. Latest validated version: 19.03

[preflight] Pulling images required for setting up a Kubernetes cluster

[preflight] This might take a minute or two, depending on the speed of your internet connection

[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'

[certs] Using certificateDir folder "/etc/kubernetes/pki"

[certs] Generating "ca" certificate and key

[certs] Generating "apiserver" certificate and key

[certs] apiserver serving cert is signed for DNS names [kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local master-stg] and IPs [10.96.0.1 192.168.100.119]

[certs] Generating "apiserver-kubelet-client" certificate and key

[certs] Generating "front-proxy-ca" certificate and key

[certs] Generating "front-proxy-client" certificate and key

[certs] Generating "etcd/ca" certificate and key

[certs] Generating "etcd/server" certificate and key

[certs] etcd/server serving cert is signed for DNS names [localhost master-stg] and IPs [192.168.100.119 127.0.0.1 ::1]

[certs] Generating "etcd/peer" certificate and key

[certs] etcd/peer serving cert is signed for DNS names [localhost master-stg] and IPs [192.168.100.119 127.0.0.1 ::1]

[certs] Generating "etcd/healthcheck-client" certificate and key

[certs] Generating "apiserver-etcd-client" certificate and key

[certs] Generating "sa" key and public key

[kubeconfig] Using kubeconfig folder "/etc/kubernetes"

[kubeconfig] Writing "admin.conf" kubeconfig file

[kubeconfig] Writing "kubelet.conf" kubeconfig file

[kubeconfig] Writing "controller-manager.conf" kubeconfig file

[kubeconfig] Writing "scheduler.conf" kubeconfig file

[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"

[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"

[kubelet-start] Starting the kubelet

[control-plane] Using manifest folder "/etc/kubernetes/manifests"

[control-plane] Creating static Pod manifest for "kube-apiserver"

[control-plane] Creating static Pod manifest for "kube-controller-manager"

[control-plane] Creating static Pod manifest for "kube-scheduler"

[etcd] Creating static Pod manifest for local etcd in "/etc/kubernetes/manifests"

[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s

[apiclient] All control plane components are healthy after 13.002889 seconds

[upload-config] Storing the configuration used in ConfigMap "kubeadm-config" in the "kube-system" Namespace

[kubelet] Creating a ConfigMap "kubelet-config-1.20" in namespace kube-system with the configuration for the kubelets in the cluster

[upload-certs] Skipping phase. Please see --upload-certs

[mark-control-plane] Marking the node master-stg as control-plane by adding the labels "node-role.kubernetes.io/master=''" and "node-role.kubernetes.io/control-plane='' (deprecated)"

[mark-control-plane] Marking the node master-stg as control-plane by adding the taints [node-role.kubernetes.io/master:NoSchedule]

[bootstrap-token] Using token: t4tcwj.22xh9lzstu56qyrb

[bootstrap-token] Configuring bootstrap tokens, cluster-info ConfigMap, RBAC Roles

[bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to get nodes

[bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials

[bootstrap-token] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token

[bootstrap-token] configured RBAC rules to allow certificate rotation for all node client certificates in the cluster

[bootstrap-token] Creating the "cluster-info" ConfigMap in the "kube-public" namespace

[kubelet-finalize] Updating "/etc/kubernetes/kubelet.conf" to point to a rotatable kubelet client certificate and key

[addons] Applied essential addon: CoreDNS

[addons] Applied essential addon: kube-proxy

 

Your Kubernetes control-plane has initialized successfully!

 

To start using your cluster, you need to run the following as a regular user:

 

  mkdir -p $HOME/.kube

  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

  sudo chown $(id -u):$(id -g) $HOME/.kube/config

 

Alternatively, if you are the root user, you can run:

 

  export KUBECONFIG=/etc/kubernetes/admin.conf

 

You should now deploy a pod network to the cluster.

Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:

  https://kubernetes.io/docs/concepts/cluster-administration/addons/

 

Then you can join any number of worker nodes by running the following on each as root:

 

kubeadm join 192.168.100.119:6443 --token t4tcwj.22xh9lzstu56qyrb \

    --discovery-token-ca-cert-hash sha256:eb3765b58c9140c9a89daf7ea21444ca44a142939ebb93aedad1ebc03202a1d7

 

  - 사용자 계정에서 kubectl 실행을 위해 위의 가이드 내용 그대로 진행을 해보자.

 

$ mkdir -p $HOME/.kube

 

$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

 

$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

 

  - 잘 설치가 된 것을 확인해보자.

 

$ kubectl get pods --all-namespaces

 

$ kubectl get nodes

 

 

 

  - Pod Network 환경을 맞춰야 하는데, k8s 를 위한 layer 3 환경을 구축해주는 flannel을 사용해보겠다.

    . https://github.com/coreos/flannel/

 

$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

 

 

  - coredns가 pending에서 running으로 바뀌었고, flannel이 추가 되었고, Master Node가 Ready 상태가 된 것을 볼 수 있다.

 

 
 
7. Worker Node 셋업
 
  - 기본 환경 설치를 모두 했다면, 아래 명령어만 실행하면 된다.
  - 아래 명령어는 Master Node 설치할 때 나왔던 가이드 밑에 있는 부분 그대로 하면 된다. (각자의 환경에 따라서 실행할 것!!!)
 
$ sudo kubeadm join 192.168.100.119:6443 --token t4tcwj.22xh9lzstu56qyrb \
    --discovery-token-ca-cert-hash sha256:eb3765b58c9140c9a89daf7ea21444ca44a142939ebb93aedad1ebc03202a1d7
 
❯ sudo kubeadm join 192.168.100.119:6443 --token t4tcwj.22xh9lzstu56qyrb \
    --discovery-token-ca-cert-hash sha256:eb3765b58c9140c9a89daf7ea21444ca44a142939ebb93aedad1ebc03202a1d7
 
[preflight] Running pre-flight checks
[WARNING SystemVerification]: this Docker version is not on the list of validated versions: 20.10.1. Latest validated version: 19.03
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
 
This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.
 
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
 
  - Master Node에서 잘 붙었는지 확인해보자.
 
$ kubectl get nodes
 

 

 
 
 
 
 
8. hello kubernetes
 
  - Master Node에서 다음과 같이 deployment를 실행해보자.
 
$ kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1
 
  - 잘 되었는지 확인도 해보자.
 
$ kubectl get deployments
 
$ kubectl get pods -o wide
 

 

  - Worker Node에서 해당 서비스가 잘 되는지 확인해보자.

 

$ curl http://10.244.1.2:8080

 

 

 

 

 

 

여기까지~

 

 

반응형

+ Recent posts