Commit f25dc4db authored by JooHan Hong's avatar JooHan Hong

k8s migration init

parent a2edc3da
Pipeline #5216 passed with stages
in 46 seconds
...@@ -4,5 +4,101 @@ ...@@ -4,5 +4,101 @@
> Docker Swarm -> `K8s`로의 **클러스터 환경**에 대해 검토하고 검증한다. > Docker Swarm -> `K8s`로의 **클러스터 환경**에 대해 검토하고 검증한다.
- Node 당 하나의 컨테이너만을 운용해야 한다.
- Manager 또는 Master를 제외한 Node에만 컨테이너가 배포되어야 한다.
- Front-end LB(HA-PROXY)와의 통신을 원활히 하도록 구성해야 한다.
## Conclusion k8s
> Swarm -> K8s로의 Migration은 검토결과 문제가 없다.
## Docker Swarm
- **Node 당 하나의 컨테이너만을 운용해야 한다.**
```python
...중략
deploy:
mode: global
```
> 이는 Swarm Cluster 외 단독 컨테이너 및 VM 환경에서 대한 리소스사용을 고려한 측면이다. 기본 값은 **Replicated** 다.
- **Manager 제외한 Node에 컨테이너를 배포해야 한다.**
```python
deploy:
placement:
onstraints: [node.hostname != TB2-DOCKER]
```
> 이는 Manager Node에 Storage 운용 및 관리/제어를 위한 목적으로만 사용하기위한 측면이다.
- **외부 LB와의 통신을 원활히 하도록 구성해야 한다.**
> N/A, 기본 **Overlay** 네트워크로 사용되어도 서비스운영에 문제가 없다.
## K8s
- **Node 당 하나의 컨테이너만을 운용해야 한다.**
> k8s의 경우는 DaemonSet Object를 Define해서 사용해야 한다.
```python
apiVersion: apps/v1
kind: DaemonSet
metadata:
...중략
```
> 세부적인 내역은 아래의 Link를 확인한다.
[www.hongsnet.net k8s 구성내역](https://gitlab.hongsnet.net/joohan.hong/joohanhong/tree/master/DOCKER/K8S/HONGSNET)
- **Manager 제외한 Node에 컨테이너를 배포해야 한다.**
> k8s의 경우 Label을 통해 구분하면 된다.
```python
apiVersion: apps/v1
kind: DaemonSet
metadata:
...
spec:
....
template:
...
spec:
...
nodeSelector:
key: worker
```
등록은 다음과 같이 수행하며, 참고적으로 key는 임의의 변수 값이다.
```bash
# kubectl label nodes cube02 key=worker
```
- **외부 LB와의 통신을 원활히 하도록 구성해야 한다.**
다음과 같이 검증을 해보았으나, Front-end LB(HA-PROXY)와의 구성(`NodePort`) 상 timeout이 발생되는 부분이 발생되었다. 따라서 일반적인 구성은 아니지만, `hostNetwork` 설정을 통해 이를 충족한다.
```python
apiVersion: apps/v1
kind: DaemonSet
metadata:
...
spec:
...
template:
...
spec:
hostNetwork: true
```
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment