kubernates

yo·2020년 12월 27일
0

목차
1) Exposing Kubernetes Ports
2) Kubernetes Mgmt Techniques

Exposing Kubernetes Ports

이 섹션은 services에 관한 것입니다.
deployments, pods을 다루고 지속적인 endpoint를 만드는 것을 다룹니다.
swarm에서는 뭔가를 배포할 때 service라는 교과서적인 방법이 있습니다.
하지만 쿠버네티스는 좀 더 다양한 방법이 있습니다.
이를 위해 이번 챕터에서는,

  • Learning SErvice Types
  • Creating Service Types
  • Service DNS
  • 포트 여는 법
    들을 배우겠습니다.

Exposing pods with services

(Defining the Four service types)
-exposing pods는 결국 외부와 커넥션을 가능하도록 만드는 작업이다.

  • kubectl expose 명령어는 이미 만들어진 pods의 service를 만든다.
  • service is an endpoint that is consistent
  • service is a stable address for pod(s)
  • 서비스를 통해 클러스터 안/밖에서 access할 수 있습니다.
  • CoreDNS allows us to resolve services by name

4종류의 service type

-ClusterIP
-NodePort
-LoadBalancer
-ExternalName

1. ClusterIP

  • 디폴트 서비스 타입이다.
  • 클러스터 내에서만 접근 가능하다.
  • Pods can reach service on apps port number
  • swarm에선 자동으로 만들어지지만, kube에서는 expose명령으로 직접 만들어줘야한다.
  • clusterip는 클러스터 내에서만 유효하다.(방화벽 같은 것도 없다)

2. NodePort

  • nodeport는 클러스터 밖과의 통신을 위한 것으로, 노드에 있는 ip를 통해 이루어진다.
    -nodeport를 만들면 각각 노드에 High port가 할당된다.
  • Port is open on every node's IP
    -80번 포트를 사용하지 않는다(?)
    -Anyone can connect(if they can reach node)
    -other pods need to be updated to this port(?)
    -These services are always avaiable in Kubernetes. (무슨말이냐면 그 어떤 회사의 쿠버네티스 제품을 사용해도 다 사용 가능하다는 뜻)

3. LoadBalancer

-클라우드에서 주로 사용되는 타입이다.
-Controls a LB endpoint external to the cluster
-LoadBalancer를 만들면 background에서 ClusterIp와 Nodeport를 만든다. 이렇게 해서 외부와 통신한다(예를들어 aws LB, cloud vendor)
-요건 기본적으로 infrastructure provider가 제공해준다.
-Only available when infra provider gives you a LB(AWS ELB, etc)

4. ExternalName

-잘 안쓰인다.

  • inbound트래픽을 처리하는 것과 별 관련 없다.
  • adds CNAME DNS record to CoreDNS only
  • not used for Pods, but for giving pods a DNS name to use for something outside Jubernetes

Creating a slusterIP service

(exposing our deployments)

kubectl get pods -w

kubectl create deployment/httpenv --image=bretfisher/httpenv

kubectl scale deplyment/httpenv --replicas=5

kubectl expose deployment/httpenv --port 8888

kubectl get service

``

Kubernetes Mgmt Techniques

profile
Never stop asking why

0개의 댓글