Chúng tôi sử dụng Kubernetes Job
s cho rất nhiều máy tính theo lô tại đây và tôi muốn thiết kế từng Công việc với một hộp giám sát để cập nhật hệ thống theo dõi tập trung với tiến độ công việc.Thùng chứa bên trong Công việc Kubernetes?
Vấn đề duy nhất là, tôi không thể tìm ra ngữ nghĩa (hoặc được cho là) của nhiều vùng chứa trong công việc.
Tôi đưa cho nó một shot anyways (với một sidecar alpine
rằng in "hello" mỗi 1 giây) và sau khi nhiệm vụ chính của tôi hoàn tất, Job
s được coi Successful
và kubectl get pods
trong Kubernetes 1.2.0 chương trình:
NAME READY STATUS RESTARTS AGE
job-69541b2b2c0189ba82529830fe6064bd-ddt2b 1/2 Completed 0 4m
job-c53e78aee371403fe5d479ef69485a3d-4qtli 1/2 Completed 0 4m
job-df9a48b2fc89c75d50b298a43ca2c8d3-9r0te 1/2 Completed 0 4m
job-e98fb7df5e78fc3ccd5add85f8825471-eghtw 1/2 Completed 0 4m
Và nếu tôi mô tả một trong những vỏ
State: Terminated
Reason: Completed
Exit Code: 0
Started: Thu, 24 Mar 2016 11:59:19 -0700
Finished: Thu, 24 Mar 2016 11:59:21 -0700
Sau đó GET
ing các yaml của công việc hiển thị thông tin cho mỗi container:
status:
conditions:
- lastProbeTime: null
lastTransitionTime: 2016-03-24T18:59:29Z
message: 'containers with unready status: [pod-template]'
reason: ContainersNotReady
status: "False"
type: Ready
containerStatuses:
- containerID: docker://333709ca66462b0e41f42f297fa36261aa81fc099741e425b7192fa7ef733937
image: luigi-reduce:0.2
imageID: docker://sha256:5a5e15390ef8e89a450dac7f85a9821fb86a33b1b7daeab9f116be252424db70
lastState: {}
name: pod-template
ready: false
restartCount: 0
state:
terminated:
containerID: docker://333709ca66462b0e41f42f297fa36261aa81fc099741e425b7192fa7ef733937
exitCode: 0
finishedAt: 2016-03-24T18:59:30Z
reason: Completed
startedAt: 2016-03-24T18:59:29Z
- containerID: docker://3d2b51436e435e0b887af92c420d175fafbeb8441753e378eb77d009a38b7e1e
image: alpine
imageID: docker://sha256:70c557e50ed630deed07cbb0dc4d28aa0f2a485cf7af124cc48f06bce83f784b
lastState: {}
name: sidecar
ready: true
restartCount: 0
state:
running:
startedAt: 2016-03-24T18:59:31Z
hostIP: 10.2.113.74
phase: Running
Vì vậy, có vẻ như sidecar của tôi sẽ cần phải xem quy trình chính (như thế nào?) Và thoát ra một cách duyên dáng sau khi phát hiện nó là một mình trong nhóm? Nếu điều này là chính xác, thì có những thực hành tốt nhất/mẫu cho điều này (nên lối ra sidecar với mã trả về của container chính? Nhưng làm thế nào để có được điều đó?)? Sau khi thử nghiệm thêm, tôi cũng đã phát hiện ra những điều sau đây: Nếu có hai thùng chứa trong một nhóm, thì nó không được coi là thành công cho đến khi tất cả các thùng chứa trong nhóm quay trở lại với mã thoát 0.
Ngoài ra, nếu restartPolicy: OnFailure
được đặt trên thông số nhóm, thì bất kỳ vùng chứa nào trong nhóm kết thúc bằng mã thoát khác sẽ được khởi động lại trong cùng một nhóm (điều này có thể hữu ích cho thanh chắn giám sát để đếm số lượng thử lại và xóa công việc sau một số lượng nhất định (để giải quyết không có lần thử lại tối đa hiện có trong công việc Kubernetes)).
Điều này không có nghĩa là một giải pháp thanh lịch, nhưng tôi nghĩ bạn có thể thiết lập một đầu dò liveness trên sidecar của bạn mà thực sự thăm dò container chính. Sau đó, khi thùng chứa chính bị hỏng, đầu dò sẽ thất bại và kubelet sẽ giết sidecar. –