Introducing Microservice K3S !!
Microservice K3S is space to learn with K3S.
Contents
Table of Contents
| No | Title | Remarks |
|---|---|---|
| 0 | 환경설정 | K3S환경셋팅 |
| 1 | 실습 | 실습 |
Learning
Table of Learning
| No | Type | Title | Day | Remarks |
|---|---|---|---|---|
| 1 | 온라인 | 컨테이너 오케스트레이션 쿠버네티스 살펴보기 | 2020.04.15 ~ 2020.05.15 | k3s |
Get Started(K3S)
VSCode 온라인
- VSCode 온라인 설치
wget https://github.com/cdr/code-server/releases/download/2.1688-vsc1.39.2/code-server2.1688-vsc1.39.2-linux-x86_64.tar.gz tar xvfz code-server2.1688-vsc1.39.2-linux-x86_64.tar.gz sudo mv code-server2.1688-vsc1.39.2-linux-x86_64/code-server /usr/local/bin mkdir ~/project sudo curl https://gist.githubusercontent.com/subicura/d025000486d30d92dfa6ccc523c3f5e3/raw/2e93bb0dca992523a3e3a6fdba95d2f3526c52db/codeserver.service -o /lib/systemd/system/codeserver.service - sudo vi codeserver.service
[Unit] Description=Code Server IDE After=network.target [Service] Type=simple User=shpimit # aws: ubuntu, gcp: shpimit Environment="PASSWORD=sunho" Restart=on-failure RestartSec=10 ExecStart=/usr/local/bin/code-server --port 8080 /home/ubuntu/project StandardOutput=file:/var/log/code-server-output.log StandardError=file:/var/log/code-server-error.log [Install] WantedBy=multi-user.target - VSCode 서비스 start
sudo systemctl start codeserver # OS 가동될때 시작하기 sudo systemctl enable codeserver - VSCode 서비스 down
sudo systemctl stop codeserver # OS 가동될때 시작하기 죽이기 sudo systemctl disable codeserver - jq 설치
sudo apt install -y jq
Practice
1. 도커기본실습:도커 기본 명령어
- 컨테이너 제거하기
docker rm container-id docker rm -f $(docker ps -aq) - 이미지 삭제하기
docker images # 이미지 확인하기 docker rmi image-id docker rmi -f $(docker images jobmp* -q) - 이미지 Dangle 삭제하기
docker image ls -f=dangling=true docker image rm $(docker image ls -f=dangling=true -q) - 네트워크 삭제하기
docker network ls # 네트워크 확인 (보통 3개 떠 있음) docker network prune - 볼륨 삭제하기
docker volume ls # 볼륨 확인 docker volume prune - Docker 불필요한것 전체 삭제하기
docker stop xxx docker rm xxx docker system prune -a2. Exam 1. 방명록 만들기:네트워크에 연결된 컨테이너 생성
- Network 만들기
docker network create app-network - MongoDB 설치:Network 연결
docker run -d --name=mongodb --network=app-network mongo:4 - Backend 설치: MongoDB 연결
docker run -d --name=backend --network=app-network -e PORT=8000 -e GUESTBOOK_DB_ADDR=mongodb:27017 subicura/guestbook-backend:latest - Frontend 설치: Backend 연결
docker run -d -p 3000:8000 -e PORT=8000 -e GUESTBOOK_API_ADDR=backend:8000 --network=app-network subicura/guestbook-frontend:latest
3. 도커compose기본실습
- docker-compose는 같은 Network를 사용하여 따로 Network설정불필요
- Wordpress: mysql
version: '3' services: wordpress: image: wordpress environment: WORDPRESS_DB_HOST: mysql WORDPRESS_DB_NAME: wp WORDPRESS_DB_USER: wp WORDPRESS_DB_PASSWORD: wp ports: - "8000:80" restart: always mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: wp MYSQL_DATABASE: wp MYSQL_USER: wp MYSQL_PASSWORD: wp - 방명록 만들기:mongodb
version: '3' services: frontend: image: subicura/guestbook-frontend:latest environment: PORT: 8000 GUESTBOOK_API_ADDR: backend:8000 ports: - "3000:8000" backend: image: subicura/guestbook-backend:latest environment: PORT: 8000 GUESTBOOK_DB_ADDR: mongodb:27017 ports: - "8000:80" restart: always mongodb: image: mongo:4 - 정리
docker-compose down docker system prune -a
4. Kubernetes 실습
- whoami-pod.yml ```yml apiVersion: v1 kind: Pod metadata: name: whoami labels: type: app spec: containers:
- name: app image: subicura/whoami:1 ```
- guide-03/task-02/whoami-pod-lp.yml ```yml apiVersion: v1 kind: Pod metadata: name: whoami-lp labels: type: app spec: containers:
- name: app image: subicura/whoami:1 livenessProbe: httpGet: path: /not/exist port: 8080 initialDelaySeconds: 5 timeoutSeconds: 2 # Default 1 periodSeconds: 5 # Defaults 10 failureThreshold: 1 # Defaults 3 ```
- guide-03/task-02/whoami-pod-rp.yml ```yml apiVersion: v1 kind: Pod metadata: name: whoami-rp labels: type: app spec: containers:
- name: app image: subicura/whoami:1 readinessProbe: httpGet: path: /not/exist port: 8080 initialDelaySeconds: 5 timeoutSeconds: 2 # Default 1 periodSeconds: 5 # Defaults 10 failureThreshold: 1 # Defaults 3 ```
- Kubernetes 명령
k apply -f whoami-pod.yml k get po k describe po/whoami k apply -f whoami-pod-lp.yml k apply -f whoami-pod-health.yml - multi container 예제
- guide-03/task-02/whoami-pod-redis.yml ```yml apiVersion: v1 kind: Pod metadata: name: whoami-redis labels: type: stack spec: containers:
- name: app image: subicura/whoami-redis:1 env:
- name: REDIS_HOST value: “localhost”
- name: db image: redis ```
- name: app image: subicura/whoami-redis:1 env:
- container에서 telnet 설치
apk add curl busybox-extras # install telnet - Kubernetes 명령
alias k=kubectl k apply -f whoami-pod-redis.yml k get all k logs whoami-redis k logs whoami-redis app k logs whoami-redis db k exec -it whoami-redis k exec -it whoami-redis -c db sh k exec -it whoami-redis -c app sh k decribe po/whoami-redis # 지금까지 내용 yml 파일 삭제 kubectl delete -f ./ - Replicaset
- guide-03/task-03/whoami-rs.yml
apiVersion: apps/v1beta2 kind: ReplicaSet metadata: name: whoami-rs spec: replicas: 1 selector: matchLabels: type: app service: whoami template: metadata: labels: type: app service: whoami spec: containers: - name: whoami image: subicura/whoami:1 livenessProbe: httpGet: path: / port: 4567 - label 제거
k get pods --show-labels k label pod/whoami-rs-42dxv service=who --overwrite - Deployment
- guide-03/task-04/whoami-deploy.yml
apiVersion: apps/v1beta2 kind: Deployment metadata: name: whoami-deploy spec: replicas: 3 selector: matchLabels: type: app service: whoami template: metadata: labels: type: app service: whoami spec: containers: - name: whoami image: subicura/whoami:1 livenessProbe: httpGet: path: / port: 4567