Skip to content

Instantly share code, notes, and snippets.

Avatar
🕶️
Working

Eohyung Lee leoh0

🕶️
Working
View GitHub Profile
@leoh0
leoh0 / README.md
Last active Feb 20, 2021
쿠버네티스 안에서 특정 트래픽을 특정 노드로 보내는 "무난하지 않은" 방법
View README.md

쿠버네티스 안에서 특정 트래픽을 특정 노드로 보내는 "무난하지 않은 방법"

우선 이걸 보기전에 쿠버네티스 안에서 특정 트래픽을 특정 노드로 보내는 "무난한" 방법을 보는게 좋다. 대충, 나가야 하는 노드에 squid 같은 reverse proxy를 두고 보내는 팟에서 해당 pod으로 http_proxy등을 이용해서 트래픽을 보내는 방법 과 같은 전통적인 방법이다.

그렇다면 "무난하지 않은" 방법은 무엇일까? 여기서 사용하는 방법들은 악용의 소지들이 다분하고 어느정도 k8s의 보안홀들을 이용하는 방법들이다.

우선 위와 같은 방법은 트래픽을 보내는 pod의 사용자가 온전히 보내야 하는 트래픽을 신경써야 하는 상태이다. 그렇다면 이렇게 하지 않는 방법은 무엇일까?

@leoh0
leoh0 / README.md
Last active Dec 28, 2020
k8s에서의 docker rate limit 문제 정리
View README.md

k8s에서의 docker rate limit 문제 정리

docker rate limit 일반적인 해결 방법

Mirror registry build

Registry as a pull through cache | Docker Documentation

그래도 다수의 다양한 이미지를 풀하면 mirror registry가 rate limit에 걸릴 가능성이 존재

@leoh0
leoh0 / README.md
Last active Jan 23, 2021
containerd를 이용해서 standalone kubelet 사용하기
View README.md

standalone-kubelet-with-containerd.md

가끔 kubernetes 같은건 너무 무거워서 단일 호스트에 docker만 띄워서 운영하는 경우같은걸 고민 하게 됩니다. 하지만 그냥 docker만 가지고 사용하면 컨테이너가 죽었을때 관리해 줘야 하는 불편함과 같이 기능을 보다 더 필요로 하게 됩니다. 그래서 이 방법을 소개해 드립니다.

이건 standalone kubelet 이라고 불리는 master 없이 node만 관리해주는 kubelet을 이용해서 container를 관리하는 방법입니다. 이건 k8s 초기 부터 원래 존재했던 컨셉이나 많이 알려져 있지 않아서 모르시는 분들이 많아서 이글을 작성해 봤습니다.

이 방법을 이용하면 실제 master 없이 kubelet 만으로 서비스를 할 수 있습니다. 컨테이너 자동 재시작, port forwarding, resource limit 등 기본적인 kubelet에서 제공하는 다양한 방법으로 컨테이너들을 관리 할 수 있습니다.

@leoh0
leoh0 / README.md
Last active Nov 2, 2020
간단한 cloud init을 활용한 쿠버네티스 클러스터링 방법
View README.md

Simple kubernetes clustering by cloud-init

kubernetes 로 클러스터를 만드는 과정이 복잡하다고 생각하실 수 있지만 사실 스크립트로 만들면 이정도로 간단해 집니다. kubernetes, docker package가 준비되었다고 한다면 남는건 3가지 종류의 프로세스가 있습니다.

  1. 첫번째 마스터
$./init_master.sh $MASTER_IP
View aa.yaml
apiVersion: v1
kind: Pod
metadata:
name: ttt
namespace: default
spec:
containers:
- command:
- nsenter
- --mount=/proc/1/ns/mnt
@leoh0
leoh0 / test.sh
Created Aug 13, 2020
Mix two different pods in one deployment
View test.sh
kubectl apply -f test.yaml
kubectl wait --for=condition=available deploy/eggs
kubectl wait --for=condition=Ready pod/cuckoo-egg
# 적용하고 나면 3개의 pod이 보인다 2개는 알 pod과 1개의 뻐꾸기 알 pod
kubectl get pods
# 그리고 서비스는 노드포트로 구성되어 있다.
kubectl get svc
NODEIP=$(kubectl get nodes minikube -o jsonpath='{.status.addresses[?(@.type=="InternalIP")].address}')
@leoh0
leoh0 / downloadmov.sh
Last active Jul 25, 2020
openstack 10th celebration
View downloadmov.sh
curl \
-fSL \
--progress \
-H "Authorization: Bearer $(curl \
-fsSL \
"https://auth.docker.io/token?service=registry.docker.io&scope=repository:leoh0/openstack10th.mov:pull" \
| sed 's/.*"token":"\([^"]*\)".*/\1/g')" \
https://registry-1.docker.io/v2/leoh0/openstack10th.mov/blobs/sha256:c5663bd9f3bb1234eea3d9be76d49538568a24dca4acb01b525f7441d955fe1b | \
tar xzvf -
@leoh0
leoh0 / wginmac.sh
Created May 17, 2020
warp 용 wireguard 맥용 가이드
View wginmac.sh
# wireguard 설치
brew install wireguard-tools
# wgcf 설치
wget https://github.com/ViRb3/wgcf/releases/download/v1.0.6/wgcf_1.0.6_darwin_amd64
chmod +x wgcf_1.0.6_darwin_amd64
mv wgcf_1.0.6_darwin_amd64 /usr/local/bin/wgcf
# wgcf 로 wg to cf 컨피그 생성
mkdir -p /usr/local/etc/wireguard
@leoh0
leoh0 / README.md
Last active Apr 2, 2020
kubectl을 느리게 사용하는 방법.
View README.md
  • slow-kubectl.sh와 같이 했을시 걸리는 시간: 1m25.738s
$ time kubectl get all
I0401 17:58:21.966762   25969 request.go:621] Throttling request took 1.162451359s, request: GET:https://10.22.70.249:6443/apis/apiextensions.k8s.io/v1beta1?timeout=32s
I0401 17:58:32.166766   25969 request.go:621] Throttling request took 2.197797331s, request: GET:https://10.22.70.249:6443/apis/networking.k8s.io/v1beta1?timeout=32s
I0401 17:58:42.366787   25969 request.go:621] Throttling request took 2.798023909s, request: GET:https://10.22.70.249:6443/apis/networking.k8s.io/v1beta1?timeout=32s
I0401 17:58:52.566791   25969 request.go:621] Throttling request took 3.398025432s, request: GET:https://10.22.70.249:6443/apis/discovery.k8s.io/v1beta1?timeout=32s
I0401 17:59:02.766754   25969 request.go:621] Throttling request took 3.997812593s, request: GET:https://10.22.70.249:6443/apis/rbac.authorization.k8s.io/v1beta1?timeout=32s
I0401 17:59:12.767024   25969 request.go:621] Throttling request took 4.397012075s, request: GET:https://10.
@leoh0
leoh0 / Dockerfile
Last active Feb 11, 2020
quiche curl dockerfile
View Dockerfile
FROM alpine:3.11 as base
RUN apk add --update \
git \
gcc \
file \
make \
musl-dev \
openssl-dev \
openssl-libs-static \