'node'에 해당되는 글 2건

  1. 2019.02.20 Kubernetes Node 가 NotReady 일 때 - inotify_add_watch
  2. 2014.02.02 Node 설치하기

Kubernetes Node 가 NotReady 인 경우 해결을 위해서 제일 먼저 해당 노드의 syslog 를 확인 하는 것이 좋다.


## Node 의 syslog 확인 (ubuntu 인 경우)
# vi /etc/log/syslog

Feb 20 12:14:49 k1-node01 kubelet[31100]: E0220 12:14:49.401890   31100 raw.go:146] Failed to watch directory "/sys/fs/cgroup/devices/system.slice": inotify_add_watch /sys/fs/cgroup/devices/system.slice/run-ref5f878051f440b98dfd9bd843a01b58.scope: no space left on device
Feb 20 12:14:49 k1-node01 kubelet[31100]: F0220 12:14:49.401909   31100 kubelet.go:1369] Failed to start cAdvisor inotify_add_watch /sys/fs/cgroup/devices/system.slice/run-ref5f878051f440b98dfd9bd843a01b58.scope: no space left on device
Feb 20 12:14:49 k1-node01 kubelet[31100]: E0220 12:14:49.640153   31100 kubelet.go:2266] node "k1-node01" not found
Feb 20 12:14:49 k1-node01 systemd[1]: kubelet.service: Main process exited, code=exited, status=255/n/a
Feb 20 12:14:49 k1-node01 systemd[1]: kubelet.service: Unit entered failed state.
Feb 20 12:14:49 k1-node01 systemd[1]: kubelet.service: Failed with result 'exit-code'.


위와 같이 inotify_add_watch 에서 no space left on device 로 에러가 날 경우에 sysctl 로 값을 늘려줘야 한다.

## fs.inotify.max_user_watches 값을 늘려줌
# vi /etc/sysctl.d/99-sysctl.conf

net.ipv4.ip_forward=1
net.ipv4.ip_local_reserved_ports=30000-32767
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-arptables=1
net.bridge.bridge-nf-call-ip6tables=1
fs.inotify.max_user_watches=1048576


해당 값을 적용하고 나서 kubelet 이 activating 상태이거나 failed 상태인 경우가 많으므로 아래와 같이 kubelet 을 재 시작해 준다.

## sysctl 로 적용 및 kubelet 재실행

# sysctl -p
# sudo systemctl restart kubelet 






Posted by Kubernetes Korea co-leader seungkyua@gmail.com

[ Ubuntu 12.04 LTS 에서 관련 라이브러리 설치 ]

$ sudo apt-get update

$ sudo apt-get upgrade

$ sudo apt-get install build-essential openssl libssl-dev pkg-config


패키지로 설치되어 있는 Nodejs 먼저 제거하기

$ sudo apt-get purge nodejs

$ sudo apt-get autoremove



시스템 전역으로 설치하기 ]

1. source tarball 을 다운받아 설치한다.

http://nodejs.org/dist/ 에서 최신 버전인 node-v0.10.26.tar.gz 을 다운받는다.

$ mkdir Node

$ cd Node

$ wget http://nodejs.org/dist/v0.10.26/node-v0.10.26.tar.gz

$ tar -zxf node-v0.10.26.tar.gz

$ cd node-v0.10.26.tar.gz


$ ./configure            # 다른 디렉토리에 설치하고 싶으면 ./configure --prefix=경로

$ make

$ sudo make install


삭제하고 싶으면

$ sudo make uninstall



2. binary tarball 을 다운받아 설치한다.

http://nodejs.org/dist/latest/ 에서 최신 버전인 node-v0.10.26-linux-x64.tar.gz 을 다운받는다.

/usr/local 아래의 bin, include, lib 등의 디렉토리에 node 관련 파일들을 복사한다.

$ mkdir Node

$ cd Node

$ wget http://nodejs.org/dist/latest/node-v0.10.26-linux-x64.tar.gz

$ tar -zxf node-v0.10.26-linux-x64.tar.gz

$ cd /usr/local

$ sudo tar --strip-components 1 -xzf ~/Node/node-v0.10.26-linux-x64.tar.gz



로컬 설치하기 ]

nvm (Node Version Manager) 를 이용하여 설치한다.


/home/stack/.nvm/v0.10.26 에 설치됨

/home/stack/.profile 파일 맨 마지막에 nvm.sh 명령을 사용할 수 있게 추가됨

$ wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh

$ . /home/stack/.profile

$ nvm install v0.10.26                 # Node v0.10.26 버전을 설치

$ nvm run v0.10.26                    # Node v0.10.26 버전을 사용

$ nvm ls                                  # Node 설치버전 리스트 조회 및 현재 사용하는 버전 조회



[ Mac 에 brew 로 설치하기 ]

# xcode 설치

# homebrew 설치

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"


$ brew install node --without-npm

$ vi .bash_profile

export PATH=/usr/local/Cellar/node/5.6.0/bin:$PATH


# npm 설치

$ curl -L https://www.npmjs.com/install.sh | sh



[ npm으로 관련 모듈 설치하기 ]

- 전역 영역에 설치하기 (-g 옵션 사용)

$ npm -g install <모듈명>


- 특정 버전을 설치하기 (0.1 버전)

$ npm -g install <모듈명>@0.1


- 전역 영역에 설치된 모듈 삭제하기

$ npm -g uninstall <모듈명>


- 전체 모듈 업데이트 하기

$ npm update


- 단일 모듈만 업데이트하기

$ npm update <모듈명>


- 최신 버전이 아닌 패키지가 있는지 확인만 하고 싶을 경우

$ npm outdated


- 설치된 모듈 종속 관계 보기

$ npm ls ll





Posted by Kubernetes Korea co-leader seungkyua@gmail.com