본문 바로가기

개발하자

복제 컨트롤러와 Kubernetes에 배포

반응형

복제 컨트롤러와 Kubernetes에 배포

Kubernetes(1.2) 내에서 복제 컨트롤러와 배포의 차이점이 무엇인지 알고 싶었습니다. 시작 문서()를 검토하는 중에 배포를 만들었지만 웹 UI에 나타나지 않습니다.

웹 UI에서 앱을 만들면 복제 컨트롤러로 생성됩니다. 그러나 기능적으로는 매우 유사해 보입니다(둘 다 포드를 관리하고 서비스를 제공합니다).

그래서 - 어떤 차이가 있고 언제 각각을 사용해야 하나요?




아직 베타 버전(API는 아래에 있음)이므로 UI에 표시되지 않을 수 있습니다. 그들은 포드를 유지하는 것 외에도 상태 전환을 자동화한다. 연결된 페이지에서:

배포는 포드 및 복제 세트(차세대 복제 컨트롤러)에 대한 선언적 업데이트를 제공합니다. 배포 개체에서 원하는 상태를 설명하기만 하면 배포 컨트롤러가 제어된 속도로 실제 상태를 원하는 상태로 변경합니다. 배포를 정의하여 새 리소스를 생성하거나 기존 리소스를 새 리소스로 바꿀 수 있습니다.

또한 원격 설치 기록 및 기타 유용한 기능도 제공합니다.

$ kubectl rollout history deployment/nginx-deployment
deployments "nginx-deployment":
REVISION    CHANGE-CAUSE
1           kubectl create -f docs/user-guide/nginx-deployment.yaml --record
2           kubectl apply -f docs/user-guide/new-nginx-deployment.yaml
3           kubectl apply -f docs/user-guide/bad-nginx-deployment.yaml

그것은 또한 변화를 추적한다.

$ kubectl rollout history deployment/nginx-deployment --revision=2
deployments "nginx-deployment" revision 2
Labels:     app=nginx,pod-template-hash=1564180365
Annotations:    kubernetes.io/change-cause=kubectl apply -f docs/user-guide/new-nginx-deployment.yaml
Image(s):   nginx:1.9.1
No volumes.



배포는 복제 컨트롤러보다 더 새롭고 더 높은 수준의 개념입니다. 또한 Replica 세트(새로운 개념이지만 Replication Controller와 거의 동일)의 배포를 관리하며, 이전 배포로 롤백하는 기능뿐만 아니라 복제본 세트를 쉽게 업데이트할 수 있습니다.

이전에는 선언적이지 않고 롤백 기능을 제공하지 않는 것으로 이 작업을 수행해야 했습니다.

Kubernetes Dashboard는 아직 배포를 지원하도록 업데이트되지 않았으며 현재 복제 컨트롤러만 지원합니다( 참조).

편집: 이제 대시보드가 배포를 지원합니다.




대시보드(웹 UI)는 더 많은 리소스(및 등) 관리를 지원하도록 크게 재설계되었으며 현재 대시보드에서는 에 대해 많은 것을 허용하지 않습니다.

곧 kubernetes 1.3에서 대시보드의 배포 관리가 지원될 예정입니다(이 문제 참조).




이제 Dashboard를 사용하면 배포를 지원합니다. k8s의 1.3 릴리스를 기다리지 않고 대시보드를 배포하거나 업데이트할 수 있습니다. 예를 들어, 방금 배포를 사용하도록 변경한 를 사용할 수 있습니다.

일반적으로 RC가 훨씬 강력한 원시적(롤링 업데이트, 버전/감사, 카나레이/녹색-청록 배포, 롤백 등)이기 때문에 RC를 통한 배포를 사용하는 것을 권장합니다(구글과 쿠버네티스 기여자도 마찬가지입니다).




제 경험으로 볼 때, 구축은 제가 필요로 하는 모든 기능을 제공하지 않습니다. 아니면, 내가 그것들을 잘못된 방식으로 사용하고 있는지도 모른다.

노드 서버를 재시작해야 하는 경우(배포로 시작된 서버에서 실행 중인 모든 포드) 실패합니다. 그리고 나는 이것을 피할 방법을 찾을 수 없다.

그렇지만,

Think 솔루션은 복제 컨트롤러입니다. 적어도 설명에서 그것은 그러한 사건들을 처리한다고 쓰여 있다.

내가 보기에 주요 배포 이점은 앱의 버전을 지속적으로 변경해야 할 때이다.

그래서 두 가지 방법 모두 좋지만 다른 이유 때문이다.




4년 전인 2016년에 시작된 질문의 가장 최근입니다

2017년에 좋은 답변이 주어집니다

우리는 지금 3가지 종류가 있다

배포(권장)

배포는 기본 복제 세트와 포드를 kubectl 롤링 업데이트와 유사한 방식으로 업데이트하는 상위 수준의 API 개체입니다. 이 롤링 업데이트 기능을 사용하려면 배포하는 것이 좋습니다. kubectl 롤링 업데이트와 달리 선언적이고 서버 측이며 추가 기능이 있기 때문입니다.

복제 세트

ReplicaSet는 새로운 세트 기반 레이블 선택기를 지원하는 차세대 복제 컨트롤러입니다. 주로 배포에서 포드 생성, 삭제 및 업데이트를 조정하는 메커니즘으로 사용됩니다. 사용자 지정 업데이트 오케스트레이션이 필요하거나 업데이트가 전혀 필요하지 않은 경우 복제본 세트를 직접 사용하는 대신 배포를 사용하는 것이 좋습니다.

복제 컨트롤러(권장되지 않음)

지정된 수의 포드 복제본이 동시에 실행되도록 합니다. 즉, 복제 컨트롤러는 포드 또는 동종 포드 집합이 항상 실행되고 사용 가능한지 확인합니다.




2023:

복제 컨트롤러와 Kubernetes에 배포

복제 컨트롤러는 이전 버전의 복제 세트입니다.

즉, 복제 컨트롤러(rc) 대 복제 세트(rs) 대 배포(배포)입니다.

rs는 세트 기반 선택기로 작업할 수 있습니다. rc는 할 수 없다.

우리가 RCvia 포드를 자동으로 업데이트할 수 있기 전에 약간의 시간

kubectl 롤링-업데이트 old_rc_dll -f new_rc_dll

이제 이 기능은 kubectl에서 제거되었습니다.

만약 우리가 수동으로 만든다면 우리는 그것의 포드를 자동으로 업데이트할 수 없다. 즉, 오래된 포드를 하나씩 삭제하고 새로운 포드를 하나씩 만드는 명령은 없다. 우리는 그것을 수동으로 해야 한다. 그러나 배포를 통해 만든 경우 배포 기능을 사용하여 포드를 자동으로 업데이트할 수 있습니다.

sorc는 전문가가 없는 오래된 것이다. 대신 사용자. 만약 우리가 유용한 방식으로 pods of rs를 업데이트하고 싶다면 수동으로 생성자를 생성하지 말고 deploy.deploy automatically creators, rs는 pods를 생성한다.


반응형