이야기박스
CNCF, Kubernetes Forum Seoul 2019 본문

CNCF에서 주관하는 Kubernetes Forum Seoul, 2019를 다녀왔습니다.
무려 150$이나 하는 비싼 포럼이기 때문에 더 집중해서 듣고 오게 된 것 같습니다 ㅎㅎ
포럼은 용산, 드래곤시티 호텔에서 열렸습니다.
현장 분위기
등록을 하고나면 바로 옆에서 등록증에 붙일 수 있는 스티커가 준비되어 있습니다.
커뮤니케이션을 위한 스티커, 성 정체성을 존중하는 젠더 스티커가 있었습니다.



키노트 이후에 간단한 다과를 할 수 있는 공간이 있었습니다. 각종 쿠버네티스 부스를 보면서 즐길 수 있었습니다 ㅎㅎ


아래는 제가 들은 트랙에 대한 가벼운 정리입니다.
Track 1. How To Debug The Pod Which Is Hard To Debug
발표자: 카카오 이어형
방법 1. Ephemeral Container
디버깅용 임시 컨테이너

kubernetes/enhancements
Features tracking repo for Kubernetes releases. Contribute to kubernetes/enhancements development by creating an account on GitHub.
github.com
방법 2. Network Namespace

방법 3. Debuging Tool 이용
kubernetes-retired/contrib
[EOL] This is a place for various components in the Kubernetes ecosystem that aren't part of the Kubernetes core. - kubernetes-retired/contrib
github.com
Insert busybox binary into the POD based on scratch image

Track 2. 쿠버네티스 테스트 간극 좁히기
발표자: ii.coop, Hippie Hacker
https://github.com/cncf/apisnoop
cncf/apisnoop
⭕️Snooping on the Kubernetes OpenAPI communications - cncf/apisnoop
github.com
https://github.com/cncf/k8s-conformance
cncf/k8s-conformance
🧪CNCF K8s Conformance Working Group. Contribute to cncf/k8s-conformance development by creating an account on GitHub.
github.com
Track 3. 쿠버네티스에서 레거시 RESTful API를 위해 gRPC 서비스 실행
발표자: Buzzvil, Sungwon Lee & Hoseong Hwang
새로운 서비스 (gRPC) + 레거시(json)의 동시 서비스가 필요
istio의 envoy가 json과 gRPC의 transcoding 지원
## Envoy yaml
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: example-transcoder
namespace: example-namespace
spec:
workloadLabels:
...
filters:
- listenerMatch:
listenerType: SIDECAR_INBOUND
filterName: envoy.grpc_json_transcoder
filterType: HTTP
filterConfig:
proto_descriptor: “path/to/bin”
match_incoming_request_route: True
auto_mapping: False
services:
- buzzvil.calendar.v1.CalendarApi
## Proto & Json 관리
패키지 단위로 관리 --> CI 파이프라인 구성

## 배포 - Helm

istion가 TCP 프로토콜을 사용하기 때문에, TCP 설정이 필요
EnvoyFilter.yaml

Track 4. etcd의 비밀 레시피
발표자: 라인플러스 손준호
## etcd란?
쿠버네티스의 분산 key-value 저장소
- configuration information
- resources object's
- cni rules
- user Define CRDs
raft algorithm를 사용.
Leader는 Follower들에게 주기적으로 heartbeat 체크를 보냄. 만약 이 heartbeat에서 타임아웃이 발생하면 새로운 리더 선출 발생
## etcd 운영
etcd가 필요한 이유? k8s 쿠버네티스가 커지고 오브젝트 호출이 빈번해지면 튜닝이 필요
Case 1. database space exceeded
$ kc apply -f deployment/app.yaml
etcdserver: mvcc: database space exceeded
etcd read only
==> k8s object 변경, 생성이 불가능해 짐
원인, 과도한 revision history
Solution. etcdctl compaction, defragment 필요
export PEERS="http://10.127.111.53:2379,http://10.127.114.99:2379,http://10.127.114.96:2379"
export ETCDCTL_API=3
# get revision
$ rev=$(etcdctl endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o
'[0-9]*')
# compaction
$ etcdctl compact $rev
compacted revision 518729
# defragment(resize high watermark)
$ etcdctl --endpoints ${PEERS} defrag
Finished defragmenting etcd member[http://10.127.111.53:2379]
Case 2. etcd의 member 노드가 fault tolerance 이상 죽었다.
$ etcdctl --endpoints ${PEER} -w table endpoint status
Failed to get the status of endpoint http://kube-master001-gt1-dev:2379 (context deadline exceeded)
Failed to get the status of endpoint http://kube-master002-gt1-dev:2379 (context deadline exceeded)
...
| http://kube-master003-gt1-dev:2379 | f63e6c37ebc0b45c | 3.2.22 | 7.6 MB | false | 35 | 91982333 |
etcd fail, kubectl 조회 불가
원인, etcd의 quorum을 잃어 버리면 raft consensus가 불가능 하므로 append entry, leader election 요청이 불가능함
member node를 다시 살려줘야 함. 하지만 member node가 살아나지 않는다면?
Solution. etcd backup을 가지고 restore
Case 3. etcd의 응답이 느려지고 endpoint status의 Raft term이 계속 증가한다
etcd high latency
원인
- 다른 네트워크안에 etcd member가 있어서 latency가 느린경우
- 혹은 disk i/o가 느려서 entry read 성능이 느린경우
Solution
- Disk를 SSD로 바꿈
- heartbeat interval, election timeout을 조정
Track 5. 부스 구경
Cloud , APM 홍보가 주를 이루고 있음


Track 6. 데이터를 지오 파티셔닝(Geo-Partitioning) 하고 싶다면
발표자: Planetscale Deepthi Sigireddi, Jiten Vaidya

Track 7. 쿠버네티스, 데이터 플랫폼 아키텍처 재구성
발표자: devsisters 오승용

데브시스터즈는 별도의 하둡 구성 없이 AWS S3만 사용.
데이터플랫폼을 yarn과 같은 데이터에 특화된 오케스트레이션에서 k8s로 옮겨가는 것에 어떠한 이점이 있을까?
Benefit 1. 구성이 쉽다

이렇게 복잡한 프로세스가 helm install & airflow operator 등록하면 끝남
Benefit 2. 분석이 쉽고 효율적으로 됨
많은 사용자가 사용하면서 비용이 많이 발생하게 됨
쿠버네티스를 사용하여 비용 최적화
Spark On K8S
JupyterHub을 통한 Spark 실행
Benefit 3. Access Controls
- pod/node level access control 가능
- group/roles/namespace 관리
스파크를 쿠버네티스에 쉽게 옮기지 못하는 이유
- Doesn't support dynamic allocation
- Pod Templating
하지만 옮길만한 가치가 있다.
- 초기 구성 비용이 상대적으로 적음
- 스파크 3.0 로드맵
Track 8. 오픈 스택을 통한 클러스터 API 구조 이해
발표자: SKT 이재상, 김에스더
Deep Dive to Cluster API
Kubernetes is a popular open source container orchestration platform to manage cloud-native applications cross cluster of hosts. It can be…
itnext.io
CAPO (Cluster API Provider OpenStack)
OpenStack을 이용하여 VM을 생성하여 Kubernetes Cluster로 구성한다. 별도의 CRDs(OpenStackMachine, OpenStackCluster와 Controller가 있다.

YAML files
- cluster.yaml ; 클러스터 전반전인 설정
- machinedeploy.yaml
- controlplane.yaml ; 마스터 노드에 대한 설정
- provider-compobent.yaml
소감
'Hobby > 각종 후기' 카테고리의 다른 글
제주 애프터눈티, 드림타워 '라운지38' (0) | 2021.12.01 |
---|---|
삼성 공기 청정기 블루스카이 필터 교환 (0) | 2020.01.16 |
Google Cloud Summit 2019, Seoul (0) | 2019.11.06 |
Google Cloud Next '19 Recap (0) | 2019.05.28 |
서울대입구 와인바 [서랍] (0) | 2019.05.15 |