쿠버네티스 레플리카셋
😃 쿠버네티스를 배우는 과정에서 Replicasets를 접하게 됩니다.
평균? 왜 우리가 그것을 사용하고 있습니까? 우리는 그것을 어디에 사용합니까? 나는 몇 가지 의심을 없애려고 노력할 것입니다.
초보자로서 당신에게 다가옵니다. 그것이 무엇에 관한 것인지, 그리고 그것이 어떤 역할을 하는지 봅시다.
쿠버네티스의 세계
Replicaset은 단순히 n개의 포드를 가질 수 있는 것처럼 포드를 복제한다는 의미입니다.
복제본 1개는 하나의 포드를 제어한다는 의미이며, 복제본 세트의 후드 아래에는 중앙
레이블이라는 중요한 개념, 그것이 무엇인지 자세히 살펴보고 살펴 보겠습니다.
정확히 replicaset의 의미와 사용 사례...
어떤 문제를 해결합니까?
자동으로 복제하고 특정 수의 포드가 모든 작업을 실행하는지 확인합니다.
매니페스트 파일에서 언급한 시간입니다.
시작하기 전에 몇 가지 용어를 이해하고 싶습니다.
객체란 무엇입니까?
단순히 객체는 우리가 특정 목적을 위해서만 사용하는 디자인 모델입니다.
쿠버네티스의 객체
자원이란 무엇입니까?
간단히 말해서 리소스는 특정 리소스에 대한 개체 모음입니다.
사용 가능한 다른 리소스가 무엇인지 봅시다. 이에 대한 명령이 있습니다.
kubectl api-resources
NAME SHORTNAMES APIVERSION NAMESPACED KIND
bindings v1 true Binding
componentstatuses cs v1 false ComponentStatus
configmaps cm v1 true ConfigMap
endpoints ep v1 true Endpoints
events ev v1 true Event
limitranges limits v1 true LimitRange
namespaces ns v1 false Namespace
nodes no v1 false Node
persistentvolumeclaims pvc v1 true PersistentVolumeClaim
persistentvolumes pv v1 false PersistentVolume
pods po v1 true Pod
podtemplates v1 true PodTemplate
replicationcontrollers rc v1 true ReplicationController
resourcequotas quota v1 true ResourceQuota
secrets v1 true Secret
serviceaccounts sa v1 true ServiceAccount
services svc v1 true Service
mutatingwebhookconfigurations admissionregistration.k8s.io/v1 false MutatingWebhookConfiguration
validatingwebhookconfigurations admissionregistration.k8s.io/v1 false ValidatingWebhookConfiguration
customresourcedefinitions crd,crds apiextensions.k8s.io/v1 false CustomResourceDefinition
apiservices apiregistration.k8s.io/v1 false APIService
controllerrevisions apps/v1 true ControllerRevision
daemonsets ds apps/v1 true DaemonSet
deployments deploy apps/v1 true Deployment
replicasets rs apps/v1 true ReplicaSet
statefulsets sts apps/v1 true StatefulSet
tokenreviews authentication.k8s.io/v1 false TokenReview
localsubjectaccessreviews authorization.k8s.io/v1 true LocalSubjectAccessReview
selfsubjectaccessreviews authorization.k8s.io/v1 false SelfSubjectAccessReview
selfsubjectrulesreviews authorization.k8s.io/v1 false SelfSubjectRulesReview
subjectaccessreviews authorization.k8s.io/v1 false SubjectAccessReview
horizontalpodautoscalers hpa autoscaling/v2 true HorizontalPodAutoscaler
cronjobs cj batch/v1 true CronJob
jobs batch/v1 true Job
certificatesigningrequests csr certificates.k8s.io/v1 false CertificateSigningRequest
leases coordination.k8s.io/v1 true Lease
bgpconfigurations crd.projectcalico.org/v1 false BGPConfiguration
bgppeers crd.projectcalico.org/v1 false BGPPeer
blockaffinities crd.projectcalico.org/v1 false BlockAffinity
caliconodestatuses crd.projectcalico.org/v1 false CalicoNodeStatus
clusterinformations crd.projectcalico.org/v1 false ClusterInformation
felixconfigurations
다음은 볼 수 있는 일부 리소스 및 개체 유형입니다.
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: frontend
labels:
app: guestbook
tier: frontend
spec:
# modify replicas according to your case
replicas: 4
selector:
matchLabels:
tier: frontend
template:
metadata:
labels:
tier: frontend
spec:
containers:
- name: php-redis
image: gcr.io/google_samples/gb-frontend:v3
ReplicaSet 매니페스트 분석
내부에 무엇이 있는지 이해합시다(단계별)
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: frontend
labels:
app: guestbook
tier: frontend
다음과 같은 매니페스트 파일에 항상 언급하고 싶은 리소스가 있습니다.
apiVersion
, kind
, metadata
, spec
apiVersion
: 이것은 단순히 생성하는 데 사용하는 API 버전을 의미합니다.그 물체
kind
: 이는 생성 중인 객체의 종류를 의미합니다. 이 경우 Replicaset입니다.plz 참고: 객체로 제공하는 것은 원하는 상태이며
당신의 워크로드가 될 것입니다
metadata
: 작업량을 식별하기 위한 추가 정보입니다.이 경우 워크로드는 복제 세트입니다.
해당 레이블을 사용하여 복제 세트의 세부 정보를 볼 수 있습니다
labels are most important in Replicaset more info coming below
spec:
# modify replicas according to your case
replicas: 4
selector:
matchLabels:
tier: frontend
template:
metadata:
labels:
tier: frontend
spec
: 복제 세트의 사양을 나타냅니다.replicas
: 레플리카 세트에서 생성하려는 포드(인스턴스) 수selector
: 여기서 선택자는 복제 세트가 선택자를 가져오고 동일한 항목을 확인합니다.제어하려는 팟(Pod)이 무엇인지 식별하는 레이블입니다.
you want to make sure (selector.matchLabels.tier: frontend)-> this tier: frontend
taken as a reference by replicaset to check the pod == (template.metadata.labels.tier: frontend)
-> this tag is attached to each pod, this just wants to be the same, then only rs knows what
are the pods it wants to checkout.
template
: 위에서 우리는 동일한 포드 수를 의미하는 4개의 복제본을 언급했습니다.레플리카 세트에 의해 생성되며 포드가 생성되면 다음에서 참조로 간주됩니다.
새 포드를 생성하기 위한 복제 세트
don't think replicaset means just creating replicas, that's not the main view, it
replicates or re-create pods if anyone one of them dies, but how replicaset is identifying
its designated podsjust by matching the
selector.tier tag to the template.tier tag
스케일 업/다운은 어떻게 하나요?
Pod를 확장하거나 축소하는 두 가지 방법이 있습니다. 하나는 매니페스트를 수정하는 것입니다.
다른 하나는 명령을 내리는 것입니다.
축소하면 이렇게 됩니다.
$ kubectl get rs
NAME DESIRED CURRENT READY AGE
frontend 4 4 4 19s
$ kubectl scale --replicas=2 rs frontend
replicaset.apps/frontend scaled
$ kubectl get rs
NAME DESIRED CURRENT READY AGE
frontend 2 2 2 23s
스케일링은 이렇게 하세요
$ kubectl get rs
NAME DESIRED CURRENT READY AGE
frontend 2 2 0 32s
$ kubectl scale --replicas=6 rs frontend
replicaset.apps/frontend scaled
$ kubectl get rs
NAME DESIRED CURRENT READY AGE
frontend 6 6 6 45s
클러스터에서 복제 세트 제거
복제본을 삭제하는 방법은 무엇입니까?
kubectl delete rs frontend
포드를 삭제하지 않고 복제 세트를 삭제하는 방법은 무엇입니까?
kubectl delete rs frontend --cascade=orphan
이것이 여행에 도움이 되기를 바랍니다. 제 블로그를 읽어주셔서 감사합니다. 내 작업이 마음에 들면 언제든지 연결하거나 다른 사람과 만나십시오. 😀
Reference
이 문제에 관하여(쿠버네티스 레플리카셋), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/krishnamohan_yerrabilli/kubernetes-replicaset-3eoe텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)