eks immersion day - deptno/deptno.github.io GitHub Wiki

eks immersion day

diary:2022-12-14

  • https://catalog.us-east-1.prod.workshops.aws/workshops/9c0aa9ab-90a9-44a6-abe1-8dff360ae428/ko-KR/100-scaling/200-cluster-scaling

  • Container Overview

    • chroot -> pivot root
    • namespace ->
    • cgroup -> ν”„λ‘œμ„ΈμŠ€λ³„λ‘œ κ°€μš© μ»΄ν“¨νŒ… μžμ›μ„ μ œμ–΄
  • Dockerfile

    • from

    • label

    • expose

    • healthcheck

    • run

    • env

    • add

    • copy

    • entrypoint

    • cmd

    • add, copy

      • add λŠ” κΈ°λŠ₯이 더 λ§Žλ‹€.
      • μ••μΆ•λœ νŒŒμΌμ„ add ν•˜λ©΄μ„œ ν•΄μ œλ„κ°€λŠ₯
      • url 도 지원 κ°€λŠ₯ -> λΉŒλ“œ μΊμ‹œκ°€ μ•ˆλ λ“―
    • entrypoint, cmd

      • entrypoint λŠ” λ³€κ²½λ˜μ§€ μ•ŠμœΌλ―€λ‘œ 보톡 ex) node
      • cmd λŠ” μ˜€λ²„λΌμ΄λ”©μ΄ 됨, ex) node 의 νŒŒλΌλ©”ν„°
  • docker expect 둜 ꡬ쑰 확인 κ°€λŠ₯ union mount system

  • docker network ls

    • bridge
    • host
    • container
    • none
  • iptables > docker proxy μˆœμ„œ

  • multi stage

    • build와 λŸ°νƒ€μž„μ— ν•„μš”ν•œ λ””νŽœλ˜μ‹œκ°€ λ‹€λ₯Έκ²½μš° 처리
  • kublet은 agent ν˜•νƒœλ‘œ λ”°λ‘œ μ„€μΉ˜λ¨

  • pod 아이피λ₯Ό containerλŠ” 곡유 λ°›λŠ”λ‹€ (sidecar 인경우 두 아이피가 κ°™μŒ)

  • k8s

    • volume

      • emptyDir - 호슀트 폴더 이용 νŒŒλ“œ μ‚­μ œμ‹œ 제거
      • hostPath - λ…ΈνŠΈ λ°”λ€”μ‹œμ—λŠ” μ‚¬μš©λΆˆκ°€
      • pv - λ…Έλ“œκ°€ 바껴도 μ‚¬μš©κ°€λŠ₯
    • pv

      • dynamic pv -> pvc 에 μ˜ν•΄μ„œ pvλ₯Ό μƒμ„±ν•˜λ©΄μ„œ ν• λ‹Ή
    • network

      • overlay network, 가상화가 λ λ•Œ λ‹€λ₯Έ λ…Έλ“œμ˜ κ°€μƒν™”μ—μ„œ ipκ°€ κ²ΉμΉ˜μ§€ μ•Šλ„λ‘ 함
    • eth0, lo -> 도컀 μ„€μΉ˜ν›„ docker0 이 좔가됨

docker network ls 
docker network ispect 
sudo su
iptables -t nat -S # port-forwarding ν›„ ν•΄λ³΄μž
  • role - rbac

    • rbac role -> namespace λ‹¨μœ„
    • cluster role -> cluster λ‹¨μœ„
    • service account -> pod κ°€ κ°€μ§€λŠ” κΆŒν•œ
  • eks

    • cordon ν•΄λ‹Ή λ…Έλ“œμ— νŒŒλ“œλ₯Ό λ„μš°μ§€ μ•Šλ„λ‘ ν•œλ‹€. μŠ€μΌ€μ€„λ§ 제거
    • drain ν•΄λ‹Ή λ…Έλ“œμ˜ νŒŒλ“œλ₯Ό λ‹€λ₯Έ νŒŒλ“œλ‘œ μ΄λ™μ‹œν‚¨λ‹€.
    • pod disruption budge
    • νŠΉμ • νŒŒλ“œ μˆ˜λŠ” μœ μ§€ν•˜λ©΄μ„œ νŒŒλ“œ μ—…λ°μ΄νŠΈλ₯Ό ν•  수 μžˆλ‹€.
    • νŠΉμ • 메타데이터λ₯Ό μ£Όμž…ν•˜λ©΄ fargate μŠ€μΌ€μ€„λŸ¬μ— μ˜ν•΄μ„œ λ”°λ‘œ 관리됨
  • network

    • docker network -> local
    • overlay network -> node κ°„
    • cni
      • vpc - aws λŠ” vpc cni
        • secondary ip κ°€ μΈμŠ€ν„΄μŠ€ νƒ€μž… μ’…μ†μ μœΌλ‘œ κ°―μˆ˜κ°€ 정해짐
        • vcpu 의 μΊνŒŒμ— μ˜ν•΄μ„œλ„ μ œν•œλ¨
        • pod 생성 κ°―μˆ˜κ°€ μ œν•œ 됨
        • secondary ip = network interface, private ip / network interface + @
        • vpc cni ν”ŒλŸ¬κ·ΈμΈμ„ μ‚¬μš©ν•˜λ©΄ secondary ip * 16 이 κ°€λŠ₯
    • svc -> k-proxy -> iptables μˆ˜μ •
    • svc nodeport μ‹œμ— externalTrafficPolicy = local 둜 μ„€μ •, s-not κ΄€λ ¨ μ„€λͺ…인데 μΆ”ν›„ μ°Ύμ•„λ³Ό 것
    • lb μƒμ„±ν•˜λ©΄ aws lb κ°€ 생성됨 cloud 벀더 λ³„λ‘œ λ§€λ‹ˆμ§€λ¨ΈνŠΈ μ‹œμŠ€ν…œμ΄ 쑴재
    • alb
      • instance mode -> node μ—μ„œ 재 λΌμš°νŒ…
      • ip mode -> λ‹€μ΄λ ‰νŠΈλ‘œ νŒŒλ“œ, μ„±λŠ₯ up
    • csi, conatiner storage interface
      • ebs λŠ” 같은 azμ—μ„œλ§Œ 마운트 κ°€λŠ₯
  • security

    • kms μ μš©ν•˜λ©΄ secret 이 μ•”ν˜Έν˜Έλ¨
    • guard duty
    • kubectl <-> iam authenticator client <-> sts
      • iam authenticator -> config map = aws-auth
    • irsa, iam role for service account
      • application 의 κΆŒν•œ - pod
      • ec2에 κΆŒν•œλ„ κ°€λŠ₯ν•˜λ‚˜ pod λŠ” μ–΄λ–€ node 에 배포될지 μ •ν•΄μ Έ μžˆμ§€ μ•Šλ‹€.
      • k8s sa 의 annotation 을 ν†΅ν•΄μ„œ iam role κ³Ό 바인딩됨
      • pod
        • AWS_ROLE_ARN
        • AWS_WEB_IDENTITY_TOKEN_FILE
  • ν™•μž₯

    • cluster auto-scaler λ…Έλ“œ ν™•μž₯을 μœ„ν•œ ν”ŒλŸ¬κ·ΈμΈ
    • karpenter 더 μœ μ—°, node group 에 묢이지 μ•ŠλŠ”λ‹€.
    • kubetl edit μ•„λž˜μͺ½μ— status λŠ” etcd μ—μ„œ λ“€μ–΄μ˜¨λ‹€
    • ingress controller
      • ingress - alb
      • service - nlb
    • aws lb
      • instance(default) -> node port 둜 보내고 μ•Œμ•„μ„œ route
      • ip -> albμ—μ„œ νŒŒλ“œ 자체둜 λΌμš°νŒ…
    • autoscaling 을 μœ„ν•΄μ„œλŠ” metric-server κ°€ ν•„μš”ν•¨
  • kubelet 은 worker node μ—μ„œ 직접 확인이 κ°€λŠ₯

  • q&a

alb.ingress.kubernetes.io/group.name: eks-demo-group
alb.ingress.kubernetes.io/group.order: '1'
  • keyword
    • netfilter
    • iptables
    • cni
    • eni
    • aws load balancer controller
    • csi
    • bastion server
    • argocd vs flux
    • eks blue prints
    • watch -n1
    • blue-green max-surge
    • siege λΆ€ν•˜ ν…ŒμŠ€νŠΈ k6 와 비ꡐ
    • https://codeberg.org/hjacobs/kube-ops-view