예전에도 NFS Server 설치를 알아봤었다.

  - https://www.whatwant.com/entry/NFSNetwork-File-System-기본-설정하기-Ubuntu-1404-1204

 

하지만 시간도 꽤 흘렀고,

Ubuntu 버전도 예전과 달라졌으니 새로 진행해보려 한다.

 

 

0. 설치 환경

  - VirtualBox 버전 6.1.26 r145957 (Qt5.6.2)

  - Ubuntu 18.04.6 LTS

  - Ubuntu 20.04.3 LTS

 

 

1. NFS Package 설치

  - 가능한 Ubuntu에서 배포하는 기본 패키지를 사용하겠다

master$ sudo apt install nfs-common nfs-kernel-server portmap

 

 

2. 디렉토리 생성

  - NFS 용도의 디렉토리를 만들고 권한을 설정하자

master$ sudo mkdir /srv/nfs

master$ sudo chmod 777 /srv/nfs

 

 

3. 접근 가능 호스트 목록 등록

  - 어디에서 접근할지 정의하자

master$ sudo nano /etc/exports
...
/srv/nfs 192.168.100.*(rw,sync,no_root_squash,no_subtree_check)

 

 

4. 서비스 리스타트

  - 설정 적용을 위해 서비스 재시작!

master$ sudo service nfs-kernel-server restart

 

 

5. 확인 (Server)

  - 지금 서비스 되고 있는 NFS 확인

master$ showmount -e 127.0.0.1

Export list for 127.0.0.1:
/srv/nfs 192.168.100.*

 

 

6. 확인 (Client)

  - 정말 연결이 잘되는지 확인

  - 이하 과정은 NFS 설치한 Server 말고 다른 Server에서 (/etc/exports 설정한 IP 대역에 있는) 수행

worker1$ sudo apt install nfs-common

worker1$ sudo mkdir /srv/nfs-client

worker1$ sudo mount -t nfs 192.168.100.200:/srv/nfs /srv/nfs-client
mount.nfs: access denied by server while mounting 192.168.100.200:/srv/nfs

 

  - 어?! access deny ?!

  - `/etc/hosts` 파일에 별도로 등록이 된 IP인 경우에 정책 적용이 제대로 안될 수 있다.

master$ sudo nano /etc/exports
...
/srv/nfs 192.168.100.*(rw,sync,no_root_squash,no_subtree_check) worker1(rw,sync,no_root_squash,no_subtree_check) 

 

  - 이제 다시 mount를 해보면, 된다.

worker1$ sudo mount -t nfs 192.168.100.200:/srv/nfs /srv/nfs-client

 

  - 아무런 메시지가 없으면 된 것이다.

worker1$ cd /srv/nfs-client

worker1$ touch temp.txt

 

  - NFS Server 측에서 확인해보면 보인다.

master$ cd /srv/nfs

master$ ls -al

 

  - 확인 다 했으면, umount 하면 된다.

worker1$ cd /srv

worker1$ sudo umount -t nfs 192.168.100.200:/srv/nfs /srv/nfs-client

 

 

자세한 옵션 등의 정보는 기존 포스팅을 참고해주세요~

  - https://www.whatwant.com/entry/NFSNetwork-File-System-기본-설정하기-Ubuntu-1404-1204

 

반응형

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

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

 

매번 잊어먹어서 기록을 위해 작성

 

[ Reference ]

- https://kubernetes.io/ko/docs/tasks/tools/install-kubectl-linux/

 

 

[ Environment ]

- `kubectl` 설치할 환경은 다음과 같다.

  . OS: Ubuntu 18.04

  . Shell: zsh

 

- `kubernetes master(control plane)` 환경은 다음과 같다.

  . IP: 192.168.100.200

 

 

[ kubectl - Install ]

- `curl` 이용하여 설치

> mkdir /srv/install/kubectl
> cd /srv/install/kubectl

> curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

> sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

 

 

[ shell 자동완성 ]

- zsh 을 위한 completion 적용

> nano ~/.zshrc

---add---
source <(kubectl completion zsh)
---------

> source ~/.zshrc

 

 

[ connect K8s Cluster ]

- K8s Cluster에 접근할 수 있는 권한 얻기

> mkdir ~/.kube
> scp vagrant@192.168.100.200:/home/vagrant/.kube/config ~/.kube/

> nano ~/.kube/config

---modify---
- server: https://127.0.0.1:6443
+ server: https://192.168.100.200:6443
---------

 

 

[ Check ]

- K8s master(control plane)을 잘 찾는지 확인해보자

❯ kubectl cluster-info
Kubernetes control plane is running at https://192.168.100.200:6443

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

 

반응형

 

대! 한! 민! 국! 짜자자 짝!짝!

 

기본으로 제공되는 Ubuntu Docker Image는

우리에게 아름다운 한글을 제대로 지원해주지 않는다.

 

그래서 지금부터는 한글을 제대로 지원해주는 Ubuntu Docker Image를 만들어 보고자 한다.

 

 

0. 작업 환경

  - Ubuntu 18.04 Desktop

 

 

1. Docker 설치하기

  - 아래 링크를 참조하면 좋고~ 아니면 아래 과정을 주르륵 따라가도 좋다.

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

 

$ cd /srv/install
$ mkdir docker
$ cd docker

$ wget https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/containerd.io_1.4.8-1_amd64.deb
$ wget https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/docker-ce-cli_20.10.7~3-0~ubuntu-focal_amd64.deb
$ wget https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/docker-ce_20.10.7~3-0~ubuntu-focal_amd64.deb

$ sudo dpkg --install ./containerd.io_1.4.8-1_amd64.deb
$ sudo dpkg --install ./docker-ce-cli_20.10.7~3-0~ubuntu-focal_amd64.deb
$ sudo dpkg --install ./docker-ce_20.10.7~3-0~ubuntu-focal_amd64.deb

$ sudo usermod -aG docker $USER

로그아웃 후 로그인
(Ubuntu Desktop에서 로그아웃으로 안되어서 재시작해버렸음)

$ docker run hello-world

$ nano ~/.zshrc
plugins=(... docker docker-compose)

 

  - 마지막 부분은 개인적으로 zsh을 사용하고 있기에... 자동 완성 기능을 추가해보았다.

 

 

2. Ubuntu Docker Image - 기본

  - 개인 취향으로 기본 패키지들을 조금 더 추가하는 것으로 Dockerfile을 다음과 같이 만들어 봤다.

 

FROM ubuntu:18.04

RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y \
        nano \
        git \
        curl \
        htop \
        man \
        openssh-client \
        sudo \
        wget \
        procps \
        lsb-release

 

  - 위 내용을 `Dockerfile.default` 파일명으로 저장한 뒤 build 하고 run 해보자.

 

host$ docker build -t ubuntu:default -f Dockerfile.default .

host$ docker run -it ubuntu:default bash

 

  - 텍스트 파일을 하나 만들어서 한글을 입력해보자. (물론 제대로 출력이 안되는 것이 정상이다)

 

default$ cd

default$ nano noname.txt

 

 

3. Ubuntu Docker Image - 한글 지원

  - 이번에는 한글을 지원해줄 수 있는 Dockerfile을 작성해 보자.

 

FROM ubuntu:18.04

RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y \
        nano \
        git \
        curl \
        htop \
        man \
        openssh-client \
        sudo \
        wget \
        procps \
        lsb-release

RUN apt-get install -y apt-utils locales
RUN locale-gen ko_KR.UTF-8
ENV LC_ALL ko_KR.UTF-8

 

  - 아래 부분만 추가해서 `Dockerfile.ko_KR` 파일명으로 저장하고 진행해보자

 

host$ docker build -t ubuntu:ko_KR -f Dockerfile.ko_KR .

host$ docker run -it ubuntu:ko_KR bash

 

  - 똑같이 한글이 써지는지 테스트해보자.

 

ko_KR$ cd

ko_KR$ nano noname.txt

 

  - 이번에는 당연히 한글이 잘 써질 것이다!!!

 

 

Ubuntu 자체가 가벼운 이미지가 아니긴 하지만...

그래도 편한 맛에 사용한다고 하면 한글 지원이 필요할 때 참고하면 좋을 듯 하다.

반응형

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

NFS Server 설치 (Ubuntu 18.04/20.04)  (0) 2021.09.21
kubectl 설치 (in Ubuntu)  (0) 2021.08.30
bpytop 설치 (Ubuntu 18.04)  (0) 2020.12.31
하드디스크 용량 분석 (SpaceSniffer)  (0) 2020.12.28
Docker Hub 활용  (0) 2020.11.14


요즘 몇 일 갑자기 유행하고 있는 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)  (0) 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


Prologue #1


최근 Docker Hub 이야기가 Hot 했다.


무료로 마음껏 사용했던 Docker Hub였는데,

Rate Limit 제한을 하게 되어 의도치 않은 Fail 메시지들을 보게 되어 다들 부랴 부랴 계정 등록하기도 하고 라이선스 구매를 하기도 하고...


특히 통합 빌드서버를 사용하는 경우

미리 준비하지 않은 경우 빌드서버에서 rate limit가 걸려 빌드가 계속 fail 되는 사태가 발생해버렸기에 난리였다!



Prologue #2


요즘 Kubernetes 공부를 하고 있는데,

Local에서만 하기에는 좀 제한적이어서 Google Cloud Platform(GCP) 환경에서 테스트를 해보고 있다.


그런데, Minikube 환경에서는 Local에서 만든 Container Image를 반영하기가 손쉬웠는데

GCP에 있는 K8s 환경에서는 그냥은 안되는 것 같다.


Docker Hub에 Local에서 만든 Container Image를 업로드 하면 손쉽게 될 것만 같다.





Body


우선 Docker Hub 사이트에 방문을 해보자.


https://hub.docker.com/



첫 페이지부터 Sign Up을 요구한다.

ID 넣고 Email 넣고 Password 넣고 로봇이 아니라고 체크 한 번 해주고 가입 완료하자.

발송된 Email에서 Confirm 한 번 눌러주면 최종적으로 가입 완료된다.



Sign In 화면은 아래와 같다.




로그인 후 첫화면은 아래와 같다.





그러면, 이제 docker login을 해보자.


실습 환경은 "Ubuntu 18.04" 이다.


Docker 설치는 아래 링크를 참조하기 바란다.

- https://whatwant.tistory.com/entry/Docker-Install-Ubuntu-16041804-64bit-using-Download



일단 login을 시도해보자.


$ docker login



뭔가 permission error가 발생한다.




그러면, Permission 이슈를 해결하고, 다시 해보자.


$ sudo chmod 666 /var/run/docker.sock


$ docker login



잘 되었다 !!!



push 과정까지 실제로 따라해보려면 실습 코드들이 필요하기에 이후 내용은 아래 GitHub Repo를 참고해서 진행하자.


- https://github.com/whatwant-school/docker-hub/tree/main/step01



$ docker build -t ${username}/count:v1 .


$ docker push ${username}/count:v1



Docker Hub에 접속해서 제대로 올라왔는지 확인해보자.




여기까지~!!

반응형

SiteMap


sitemap.xml


반응형


기본 환경은

아래와 같이 준비해놓자


Minikube Install

https://www.whatwant.com/entry/Minikube-install-in-Ubuntu-1804-in-VirtualBox


Node.js Install

https://www.whatwant.com/entry/Nodejs-install-in-Ubuntu-1804




1. 준비


    - Minikube 시작해 놓고...


❯ minikube start


    - dashboard 띄워서 눈으로 보고...


❯ minikube dashboard


    - 웹서버 소스 파일 준비해놓고....


❯ nano ./server.js


var http = require('http');

var os = require('os');


var host = os.hostname();

var handleRequest = function(request, response) {

    console.log('Received request for URL: ' + request.url);

    response.writeHead(200);

    response.end('Server is running on: ' + host);

};


var www = http.createServer(handleRequest);

www.listen(8080);




2. docker 환경 맞추기


    - Minikube를 위한 docker 환경을 갖춰야 한다.


    - Minikube에서 요구하는 docker-env는 뭔지 확인해본다.


❯ minikube docker-env


export DOCKER_TLS_VERIFY="1"

export DOCKER_HOST="tcp://192.168.99.100:2376"

export DOCKER_CERT_PATH="/home/chani/.minikube/certs"

export MINIKUBE_ACTIVE_DOCKERD="minikube"


# To point your shell to minikube's docker-daemon, run:

# eval $(minikube -p minikube docker-env)


    - 뭘 해야하는지 밑에서 알려줬다.


❯ eval $(minikube -p minikube docker-env)


    - 잘 되었는지 확인해보자.


❯ docker images -a


REPOSITORY                                TAG                 IMAGE ID            CREATED             SIZE

gcr.io/k8s-minikube/storage-provisioner   v2                  9c3ca9f065bb        2 weeks ago         32.2MB

kubernetesui/dashboard                    v2.0.1              85d666cddd04        3 months ago        223MB

k8s.gcr.io/kube-proxy                     v1.18.3             3439b7546f29        3 months ago        117MB

k8s.gcr.io/kube-apiserver                 v1.18.3             7e28efa976bd        3 months ago        173MB

k8s.gcr.io/kube-scheduler                 v1.18.3             76216c34ed0c        3 months ago        95.3MB

k8s.gcr.io/kube-controller-manager        v1.18.3             da26705ccb4b        3 months ago        162MB

kubernetesui/metrics-scraper              v1.0.4              86262685d9ab        4 months ago        36.9MB

k8s.gcr.io/pause                          3.2                 80d28bedfe5d        6 months ago        683kB

k8s.gcr.io/coredns                        1.6.7               67da37a9a360        6 months ago        43.8MB

k8s.gcr.io/etcd


    - Minikube에서 쓰이는 아이들이 보이면 잘 된것이다.




3. Docker build


    - 준비되어있는 server.js 파일을 담는 docker 이미지를 만들어 보자


    - dockerfile 부터 만들어 보자.


❯ ls -al


합계 12

drwxr-xr-x 2 chani chani 4096  8월 22 04:59 .

drwxr-xr-x 3 chani chani 4096  8월 22 04:58 ..

-rw-r--r-- 1 chani chani  336  8월 22 04:59 server.js


❯ nodejs --version  


v12.18.3


❯ nano ./dockerfile


FROM node:12.18.3

EXPOSE 8080

COPY server.js .

CMD node server.js


    - 이제 빌드를 해보자.


❯ docker build -t whoru:v1 -f dockerfile .


Sending build context to Docker daemon  3.072kB

Step 1/4 : FROM node:12.18.3

12.18.3: Pulling from library/node

419e7ae5bb1e: Pull complete 

848839e0cd3b: Pull complete 

de30e8b35015: Pull complete 

258fdea6ea48: Pull complete 

ddb75eb7f1e9: Pull complete 

7ec8a0667334: Pull complete 

3366ea2fc4ca: Pull complete 

48116fadad2c: Pull complete 

27e46094f3f2: Pull complete 

Digest: sha256:d0738468dfc7cedb7d260369e0546fd7ee8731cfd67136f6023d070ad9679090

Status: Downloaded newer image for node:12.18.3

 ---> cfcf3e70099d

Step 2/4 : EXPOSE 8080

 ---> Running in 042f882d14c1

Removing intermediate container 042f882d14c1

 ---> 20836a2513a7

Step 3/4 : COPY server.js .

 ---> f0dd3d753786

Step 4/4 : CMD node server.js

 ---> Running in 252610e59ae9

Removing intermediate container 252610e59ae9

 ---> 3dcf96f4c978

Successfully built 3dcf96f4c978

Successfully tagged whoru:v1


    - 잘 만들어졌는지 확인해보자.


❯ docker images


REPOSITORY                                TAG                 IMAGE ID            CREATED              SIZE

whoru                                     v1                  3dcf96f4c978        About a minute ago   917MB

node                                      12.18.3             cfcf3e70099d        2 weeks ago          917MB

gcr.io/k8s-minikube/storage-provisioner   v2                  9c3ca9f065bb        2 weeks ago          32.2MB

kubernetesui/dashboard                    v2.0.1              85d666cddd04        3 months ago         223MB

k8s.gcr.io/kube-proxy                     v1.18.3             3439b7546f29        3 months ago         117MB

k8s.gcr.io/kube-controller-manager        v1.18.3             da26705ccb4b        3 months ago         162MB

k8s.gcr.io/kube-apiserver                 v1.18.3             7e28efa976bd        3 months ago         173MB

k8s.gcr.io/kube-scheduler                 v1.18.3             76216c34ed0c        3 months ago         95.3MB

kubernetesui/metrics-scraper              v1.0.4              86262685d9ab        4 months ago         36.9MB

k8s.gcr.io/pause                          3.2                 80d28bedfe5d        6 months ago         683kB

k8s.gcr.io/coredns                        1.6.7               67da37a9a360        6 months ago         43.8MB

k8s.gcr.io/etcd                           3.4.3-0             303ce5db0e90        10 months ago        288MB


    - 제일 위에 예쁘게 만들어져 있는 것을 볼 수 있다.





4. Pod 생성


    - 방금 만든 Docker image를 실행해 보자.


❯ kubectl run whoru --image=whoru:v1 --port=8080 --image-pull-policy=Never


pod/whoru created


    - dashboard에서 확인해볼 수 있다.



    - 물론 명령어로도 확인할 수 있다.


❯ kubectl get pods


NAME    READY   STATUS    RESTARTS   AGE

whoru   1/1     Running   0          3m28s



❯ kubectl describe pod whoru


Name:         whoru

Namespace:    default

Priority:     0

Node:         minikube/192.168.99.100

Start Time:   Sat, 22 Aug 2020 05:43:50 +0900

Labels:       run=whoru

Annotations:  <none>

Status:       Running

IP:           172.17.0.5

...




5. Service 생성


    - Pod만 가지고는 접근할 방법이 없다.

    - 연결고리 역할을 해주는 Service를 생성해보자.


❯ kubectl expose pod whoru --type=LoadBalancer


service/whoru exposed


    - 당연히 dashboard에서도 나타난다.



    - Service를 통해 접근이 가능한지 테스트 해보자.


❯ minikube service whoru


|-----------|-------|-------------|-----------------------------|

| NAMESPACE | NAME  | TARGET PORT |             URL             |

|-----------|-------|-------------|-----------------------------|

| default   | whoru |        8080 | http://192.168.99.100:31610 |

|-----------|-------|-------------|-----------------------------|

🎉  Opening service default/whoru in default browser...

 chani  /srv/workspace/server

❯ 기존 브라우저 세션에서 여는 중입니다.




다음 단계는 다음 포스팅으로~

반응형

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

Docker Hub 활용  (0) 2020.11.14
SiteMap  (0) 2020.08.30
Node.js install (in Ubuntu 18.04)  (0) 2020.08.22
Minikube install (in Ubuntu 18.04 in VirtualBox)  (0) 2020.08.22
의자 가죽 리폼 (피아노의자, 식탁의자)  (0) 2020.05.25

+ Recent posts