포드, ReplicaSet, 배포 서비스는 Kubernetes 자원 오브젝트 간의 관계

도 다음 포드 ReplicaSet, 배포 서비스의 관계.

아래 :

포드는 하나 개 이상의 용기의 조합이 컨테이너가 메모리를 공유하고, 네트워크 이름 공간, 어떻게 실행하고 통제 할 수 있습니다. 포드는 Kubernetes을 배포 할 수있는 가장 작은 단위입니다. 중국어 단어 포드 완두콩을 번역, 고정 표시기 컨테이너는 완두콩 포드 콩에서 실행 같다.

ReplicaSet는 :
나를 복제 컨트롤러를 얘기하자. 복제 컨트롤러의 역할은 지정된 매수로 포드 실행을 보장하는 것입니다.
ReplicaSet 복제 컨트롤러 업그레이드 된 버전입니다. 선택기에 대한 ReplicaSet 및 복제 컨트롤러 지원의 유일한 차이점. 복제 컨트롤러 만 식 기반 선택기 (ENV = 디바이스 또는 환경! = QA)를 지원하지만 ReplicaSet도 (DEV, QA notin (V1.0, V2.0) 또는 ENV의 컬렉션 선택기 (버전에 기초하여, 새로운 지원 )).
포드에 의해 복사 spec.replicas 문의 YAML 파일 번호합니다.

배포 :
업그레이드 및 롤백, 포드, ReplicaSet 관리 롤링 배포 응용 프로그램, 확장 및 볼륨 감소를 구현 될 수있다.

서비스 :
그냥 질문은 ReplicaSet는 ReplicaSet이 작업이이 항상 있는지 확인하기 위해 새로운 포드, 포드 번호를 생성, 포드의 수는 어떤 이유로 포드가 정지 할 때, 2 정의합니다. 그러나 각 포드는 자신의 IP, 프런트 엔드 요청은 해당 요청이 그것의 새로운 포드의 프론트 엔드로 전송되는 새로운 포드 IP가 무엇인지 모르고있다?
대답은 서비스를 사용하는
서비스는 서비스, 포드의 클러스터 인스턴스의 집합으로 액세스 엔트리 주소를 정의의 각 컨테이너 외부에서 엔트리 주소 액세스 요청에 의해 뒤에 응용 프로그램 원위부 액세스를 구성 복사 K8S을의 후단에로드 밸런싱입니다 응용 프로그램. 서비스 및 클러스터의 백엔드 포드 사본 사이에 라벨 선택기를 연결하여 얻을 수있다.
인간의 말을하십시오 : 프런트 엔드 요청이 전달 후 서비스, 서비스에 포드에 요청을 포드로 직접 전송하지만, 전송되지 않습니다.

요약 : 포드는 ReplicaSet 관리하고, ReplicaSet는 포드의 수를 제어; ReplicaSet하고 배포 관리, 배포 제어 포드, 응용 프로그램, 롤백을 업그레이드 물론, 포드의 수를 제어 할 수 있습니다. 서비스는 포드에 요청을 전달하는 책임을 통일 고정 입구 프론트 엔드를 제공한다.

연습

myapp.yaml 파일을 정의

apiVersion: apps/v1
# 声明一个Deployment资源对象
kind: Deployment
metadata:
  name: deployment-myapp
spec:
# 通过replicas声明pod个数是2  
  replicas: 2
# 通过标签选择被控制的pod    
  selector:
    matchLabels:
      app: myapp
# 在template中定义pod      
  template:
    metadata:
# 给pod打上标签app=myapp    
      labels:
        app: myapp
    spec:
      containers:
# 声明容器名称,注意不是pod名称,pod名称应该定义在metadata中
      - name: myapp
        image: ikubernetes/myapp:v1
        ports:
        - name: http
          containerPort: 80
# 在一个yaml文件中通过---分割多个资源对象          
---
apiVersion: v1
# 声明一个Service资源对象
kind: Service
metadata:
  name: service-myapp
spec:
# service-myapp将选择标签包含app=myapp的pod
  selector:
    app: myapp
  ports:
  - name: http
# Service监听端口  
    port: 80
# 转发到后端Pod的端口号   
    targetPort: 80

이 리소스 배포 목록 

-f myapp.yaml을 적용 kubectl

매우 흥미로운 그림을 봐

myapp.yaml 파일은 배포, 아니 문 ReplicaSet, 포드의 이름의 이름을 선언한다. 그러나는 Kubernetes 자동 이름에서 ReplicaSet, 포드를 줄 것이다.

배포 이름은 배포-의 MyApp입니다

ReplicaSet 이름은 배포-myapp와-5fdb5f69f, 포드 템플릿의 실제 배포 이름과 해시 값

포드 이름 배포-myapp와-5fdb5f69f-njrb6, 배포-MyApp를-5fdb5f69f-whpwg, 해시 값을 더한 ReplicaSet의 실제 이름입니다.

사용은 서비스 myapp와 모양의 SVC 서비스 MyApp를 명령 세부 사항을 설명 kubectl.

당신은 서비스 myapp와 IP 주소가 10.97.41.88입니다 볼 수 있습니다. 요청을 보내기 10.97.41.88:80 10.244.1.5:80 또는 10.244.2.2:80로 전달됩니다

봐 :

호스트 최초의 직접 요청 포드, 포드 획득

컬 10.244.1.5:80/hostname.html

컬 10.244.2.2:80/hostname.html

그런 다음 서비스의 MyApp는 서비스 myapp와 포드는 백엔드에 요청을로드 요구의

컬 10.97.41.88:80/hostname.html

 

매우 흥미로운 일이있다. 포드는 Ping 할 수 있지만, 아가 ping을하지 않았다

이유는 무엇입니까?

답변 : 서비스가 실제로 핑이 약간 실패 있도록 규칙, ICMP 프로토콜을 지원하지 않는 규칙의 iptables 또는 IPVS를 전달하기 때문에.

 

 

 

 

 

 

게시 51 개 원래 기사 · 원 찬양 14 ·은 40000 +를 볼

추천

출처blog.csdn.net/u010606397/article/details/90752262