Last active
July 23, 2020 08:14
-
-
Save mosfet1kg/f0b9d277f83754c50df5a8c317652ac0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
marp: true | |
#theme: uncover | |
paginate: true | |
footer: '' | |
--- | |
<!-- _paginate: false --> | |
<!-- _theme: uncover --> | |
# <!--fit--> 개발환경 세팅 | |
## kubernetes 기반 | |
2020.07.23 | |
--- | |
# 커널 업그레이드 | |
kubelet 은 docker-shim을 이용하여 containerd를 제어함. | |
3.10 커널에서는 docker-shim에 memory leak이 발생하여 커널 업그레이드를 진행. | |
https://support.d2iq.com/s/article/Critical-Issue-KMEM-MSPH-2018-0006 | |
## 커널 버전 확인 | |
```bash | |
[irteamsu@dev-k8s-test001-ncl ~]$ uname -r | |
3.10.0-693.2.2.el7.x86_64 | |
``` | |
--- | |
# 커널 업그레이드(cont.) | |
4.17.9 커널로 업그레이드 진행 | |
(tne와 협의하여 현재 관리망에서 사용되고 있는 vmware 하이퍼바이저와 호환되는 커널버전을 사용해야함) | |
```bash | |
wget https://kr.object.ncloudstorage.com/kubernetes/kernel-ml-4.17.9-1.el7.elrepo.x86_64.rpm | |
rpm -ivh kernel-ml-4.17.9-1.el7.elrepo.x86_64.rpm | |
grub2-mkconfig -o /boot/grub2/grub.cfg | |
sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg | |
grub2-set-default 0 | |
``` | |
진행 완료 후 재부팅 수행 | |
--- | |
# 커널 업그레이드(cont.) | |
관리망의 경우 리부팅 시 tne 및 운영팀에게 자동으로 알림이 통보됨. | |
nsight에서 PM(Planned Maintenance) 등록 후 진행하는 것이 필요함. | |
 | |
--- | |
# Docker 설치 | |
사내 VM들은 의도적으로 파티션 용량 할당을 다르게함. | |
/ 용량을 작게 할당하고, /home에 상당히 많이 배분. | |
```bash | |
[irteamsu@dev-k8s-test001-ncl ~]$ df -h | |
Filesystem Size Used Avail Use% Mounted on | |
/dev/xvda1 10G 5.1G 5.0G 51% / | |
devtmpfs 3.9G 0 3.9G 0% /dev | |
tmpfs 3.9G 16K 3.9G 1% /dev/shm | |
tmpfs 3.9G 468K 3.9G 1% /run | |
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup | |
/dev/xvda3 87G 142M 87G 1% /home | |
tmpfs 782M 0 782M 0% /run/user/10000 | |
tmpfs 782M 0 782M 0% /run/user/0 | |
tmpfs 782M 0 782M 0% /run/user/11000 | |
``` | |
--- | |
# Docker 설치(cont.) | |
Docker의 경우 /var/lib/docker 에 컨테이너 이미지들을 저장. | |
/ 를 사용하므로 용량이 부족해짐. | |
symbolic link를 통해 /home에 이미지를 저장하도록 변경. | |
```bash | |
[irteamsu@dev-k8s-test001-ncl ~]$ sudo mkdir /home1/docker | |
[irteamsu@dev-k8s-test001-ncl ~]$ sudo ln -s /home1/docker /var/lib/docker | |
``` | |
--- | |
# Docker 설치(cont.) | |
아래의 명령어로 호스트에 도커를 설치 | |
```bash | |
[irteamsu@dev-k8s-test001-ncl ~]$ sudo curl https://get.docker.com | bash | |
% Total % Received % Xferd Average Speed Time Time Time Current | |
Dload Upload Total Spent Left Speed | |
100 13857 100 13857 0 0 56049 0 --:--:-- --:--:-- --:--:-- 56101 | |
# Executing docker install script, commit: 26ff363bcf3b3f5a00498ac43694bf1c7d9ce16c | |
+ sudo -E sh -c 'yum install -y -q yum-utils' | |
[irteamsu@dev-k8s-test001-ncl ~]$ sudo systemctl enable docker | |
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service. | |
[irteamsu@dev-k8s-test001-ncl ~]$ sudo systemctl start docker | |
[irteamsu@dev-k8s-test001-ncl ~]$ sudo docker ps | |
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES | |
``` | |
--- | |
# ssh key pair 생성 | |
ansible이 구동될 서버에서 ssh key pair를 생성한다. (이 서버에서 k8s의 클러스터에 참여할 모든 노드에 ssh로 ansible playbook에 작성된 task를 수행한다.) | |
1. key pair 생성 | |
```bash | |
$ ssh-keygen | |
Generating public/private rsa key pair. | |
Enter file in which to save the key (/home1/irteamsu/.ssh/id_rsa): Created directory '/home1/irteamsu/.ssh'. | |
Enter passphrase (empty for no passphrase): | |
Enter same passphrase again: | |
Your identification has been saved in /home1/irteamsu/.ssh/id_rsa. | |
Your public key has been saved in /home1/irteamsu/.ssh/id_rsa.pub. | |
The key fingerprint is: | |
SHA256:Zq8hzzPA/KP3YGapQHKxQgZ7TUTMXgyfozP3v7l2tEI irteamsu@dev-k8s-test001-ncl | |
The key's randomart image is: | |
+---[RSA 2048]----+ | |
|. ==o | | |
| o oo.o. | | |
|. +.o.+ | | |
| + .+ . | | |
| o Bo. S | | |
| = +++ oE . | | |
| . .oO... . | | |
| . O*=o.o | | |
| oo+**= | | |
+----[SHA256]-----+ | |
``` | |
--- | |
# ssh key pair 생성(cont.) | |
2. public key 확인 | |
```bash | |
$ cat ~/.ssh/id_rsa.pub | |
ssh-rsa AAAAB3NzaC1yc2EAAg7rrni3dlYo5YOoeG/8wj5GtGZIjrudI56P irteamsu@dev-k8s-test001-ncl | |
``` | |
3. k8s가 설치될 모든 노드에 접근하여, public key를 ~/.ssh/authorized_keys에 저장 | |
--- | |
# ansible | |
- 개발 환경 구축 등의 일련의 작업을 자동화할 수 있는 도구 | |
- python + YAML 기반으로 만들어짐 | |
# kubespray | |
https://github.com/kubernetes-sigs/kubespray | |
- kubernetes를 ansible 기반으로 설치할 수 있도록 구성한 playbook | |
--- | |
# ansible 설치 | |
- ansible과 그 일부 모듈은 python기반. | |
```bash | |
$ sudo yum install -y python-pip | |
``` | |
- kubespray 저장소 clone | |
```bash | |
#$ git clone https://github.com/kubernetes-sigs/kubespray.git | |
$ git clone https://oss.navercorp.com/ncp-container/kubespray-internal | |
``` | |
- 앞서 받은 pip를 통해, kubespray에 필요한 phyton 모듈을 다운로드 | |
```bash | |
$ pip install -r requirements.txt | |
``` | |
--- | |
# kubespray playbook 구성 | |
* inventory | |
- https://oss.navercorp.com/ncp-container/kubespray-internal/blob/ncloud/inventory/sample/inventory.ini | |
* cluster.yml | |
- 클러스터 구성시 사용 | |
- https://oss.navercorp.com/ncp-container/kubespray-internal/blob/ncloud/cluster.yml | |
* scale.yml | |
- 노드 확장시 사용 | |
- https://oss.navercorp.com/ncp-container/kubespray-internal/blob/ncloud/scale.yml | |
--- | |
# ansible 구동 | |
```bash | |
$ ansible-playbook -i inventory.ini ../../cluster.yml | |
``` | |
--- | |
# 기타 | |
- NAS 신청 | |
- VIP 신청 | |
* 터널링 인터페이스 | |
* TCPMSS |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment