롤링하고 있지 I이는 Kubernetes에서 다음과 같은 배포 :는 Kubernetes 배포 갱신
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
run: hello-node
name: hello-node
namespace: default
spec:
replicas: 2
selector:
matchLabels:
run: hello-node
strategy:
rollingUpdate:
maxSurge: 2
maxUnavailable: 0
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
run: hello-node
spec:
containers:
- image: <image>:<tag>
imagePullPolicy: Always
name: hello-node
livenessProbe:
httpGet:
path: /rest/hello
port: 8081
initialDelaySeconds: 15
timeoutSeconds: 1
ports:
- containerPort: 8081
protocol: TCP
resources:
requests:
cpu: 400m
terminationMessagePath: /dev/termination-log
dnsPolicy: ClusterFirst
restartPolicy: Always
securityContext: {}
terminationGracePeriodSeconds: 30
문제 난의 내 이미지의 새 버전을 생각한 내 배포를 업데이트 할 때, Kubernetes
즉시로 모두 포드를 죽일 것입니다 새 이미지로 두 개의 새 창을 가져올 수 있습니다. 새로운 포드가 부팅되는 동안 서비스 중단이 발생합니다. 새로운 포드가 livenessProbe
에 따라 건강에 대한
- 시작 한 포드 : 때문에 나는 다음과 같은 작업을 수행 할
Kubernetes
을 기대하고있어rollingUpdate
과livenessProbe
의모든 포드가 이주 될 때까지 이전 이미지
- 반복과
- 킬 하나 개 포드
여기에 뭔가가 빠졌습니까?
감사합니다. 'readyinessProbe'는 서비스 중단에 결정적으로 도움이되었습니다. 이제'k8s'는 2 개의 새로운 포드를 시작하여 준비가 될 때까지 기다렸다가, 2 개의 포드를 죽일 것입니다. 이것은 더 좋지만 여전히 롤링 업데이트 동작을 얻지는 못하고 있습니다. 왜 그런가? – phoenix7360
"롤링 업데이트 동작을 얻지 못했습니다"에 대해 자세히 설명 할 수 있습니까? '.strategy.rollingUpdate.maxSurge'는''2''와''MaxUnavailable''이''0''으로 설정되어 있음을 의미합니다. 이것은 Deployment가 최대 4 개의 복제본과 최소 2 개의 복제본을 가질 것을 기대한다는 것을 의미합니다. 2 개의 복제본을 의미하는'minReadySeconds'를 설정하지 마십시오). 그래서 당신이 보는 것은 기대됩니다. – janetkuo
Kubernetes 웹 사이트의 비디오에서 롤링 업데이트 중에 kubernetes가 이전 포드를 제거하고 새 포드를 추가하는 방법을 번갈아 사용한다는 것을 알고있었습니다. 포드가 3 개인 경우 [3,0], [2.1], [1,2], [0,3]이됩니다. 따라서 두 버전의 서비스가 트래픽을 처리하는 기간이 있습니다. 전 롤링 업데이트 (예 : 배포 객체가 아닌)의 옛 방식에서는 각 업데이트 사이의 기간을 정의하는 매개 변수가 있다는 것을 알고 있습니다. 나는 이해하지 못 했니? – phoenix7360