|
| 1 | +--- |
| 2 | +title: Mengatur Probe Liveness, Readiness dan Startup |
| 3 | +content_template: templates/task |
| 4 | +weight: 110 |
| 5 | +--- |
| 6 | + |
| 7 | +{{% capture overview %}} |
| 8 | + |
| 9 | +Laman ini memperlihatkan bagaimana cara untuk mengatur _probe liveness_, _readiness_, dan |
| 10 | +_startup_ untuk Container. |
| 11 | + |
| 12 | +_Probe liveness_ digunakan oleh [kubelet](/docs/admin/kubelet/) untuk mengetahui |
| 13 | +kapan perlu mengulang kembali (_restart_) sebuah Container. Sebagai contoh, _probe liveness_ |
| 14 | +dapat mendeteksi _deadlock_, ketika aplikasi sedang berjalan tapi tidak dapat berfungsi dengan baik. |
| 15 | +Mengulang Container dengan _state_ tersebut dapat membantu ketersediaan aplikasi yang lebih baik |
| 16 | +walaupun ada kekutu (_bug_). |
| 17 | + |
| 18 | +_Probe readiness_ digunakan oleh kubelet untuk mengetahui kapan sebuah Container telah siap untuk |
| 19 | +menerima lalu lintas jaringan (_traffic_). Suatu Pod dianggap siap saat semua Container di dalamnya telah |
| 20 | +siap. Sinyal ini berguna untuk mengontrol Pod-Pod mana yang digunakan sebagai _backend_ dari Service. |
| 21 | +Ketika Pod dalam kondisi tidak siap, Pod tersebut dihapus dari Service _load balancer_. |
| 22 | + |
| 23 | +_Probe startup_ digunakan oleh kubelet untuk mengetahui kapan sebuah aplikasi Container telah mulai berjalan. |
| 24 | +Jika _probe_ tersebut dinyalakan, _probe_ akan menonaktifkan pemeriksaan _liveness_ dan _readiness_ sampai |
| 25 | +berhasil, kamu harus memastikan _probe_ tersebut tidak mengganggu _startup_ dari aplikasi. |
| 26 | +Mekanisme ini dapat digunakan untuk mengadopsi pemeriksaan _liveness_ pada saat memulai Container yang lambat, |
| 27 | +untuk menghindari Container dimatikan oleh kubelet sebelum Container mulai dan berjalan. |
| 28 | + |
| 29 | +{{% /capture %}} |
| 30 | + |
| 31 | +{{% capture prerequisites %}} |
| 32 | + |
| 33 | +{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} |
| 34 | + |
| 35 | +{{% /capture %}} |
| 36 | + |
| 37 | +{{% capture steps %}} |
| 38 | + |
| 39 | +## Mendefinisikan perintah liveness |
| 40 | + |
| 41 | +Kebanyakan aplikasi yang telah berjalan dalam waktu lama pada akhirnya akan |
| 42 | +bertransisi ke _state_ yang rusak (_broken_), dan tidak dapat pulih kecuali diulang kembali. |
| 43 | +Kubernetes menyediakan _probe liveness_ untuk mendeteksi dan memperbaiki situasi tersebut. |
| 44 | + |
| 45 | +Pada latihan ini, kamu akan membuat Pod yang menjalankan Container dari image |
| 46 | +`k8s.gcr.io/busybox`. Berikut ini adalah berkas konfigurasi untuk Pod tersebut: |
| 47 | + |
| 48 | +{{< codenew file="pods/probe/exec-liveness.yaml" >}} |
| 49 | + |
| 50 | +Pada berkas konfigurasi di atas, kamu dapat melihat bahwa Pod memiliki satu `Container`. |
| 51 | +_Field_ `periodSeconds` menentukan bahwa kubelet harus melakukan _probe liveness_ setiap 5 detik. |
| 52 | +_Field_ `initialDelaySeconds` memberitahu kubelet untuk menunggu 5 detik sebelum mengerjakan |
| 53 | +_probe_ yang pertama. Untuk mengerjakan _probe_, kubelet menjalankan perintah `cat /tmp/healthy` |
| 54 | +pada Container tujuan. Jika perintah berhasil, kode 0 akan dikembalikan, dan kubelet menganggap |
| 55 | +Container sedang dalam kondisi hidup (_alive_) dan sehat (_healthy_). Jika perintah mengembalikan |
| 56 | +kode selain 0, maka kubelet akan mematikan Container dan mengulangnya kembali. |
| 57 | + |
| 58 | +Saat dimulai, Container akan menjalankan perintah berikut: |
| 59 | + |
| 60 | +```shell |
| 61 | +/bin/sh -c "touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600" |
| 62 | +``` |
| 63 | + |
| 64 | +Container memiliki berkas `/tmp/healthy` pada saat 30 detik pertama setelah dijalankan. |
| 65 | +Kemudian, perintah `cat /tmp/healthy` mengembalikan kode sukses. Namun setelah 30 detik, |
| 66 | +`cat /tmp/healthy` mengembalikan kode gagal. |
| 67 | + |
| 68 | +Buatlah sebuah Pod: |
| 69 | + |
| 70 | +```shell |
| 71 | +kubectl apply -f https://k8s.io/examples/pods/probe/exec-liveness.yaml |
| 72 | +``` |
| 73 | + |
| 74 | +Dalam 30 detik pertama, lihatlah _event_ dari Pod: |
| 75 | + |
| 76 | +```shell |
| 77 | +kubectl describe pod liveness-exec |
| 78 | +``` |
| 79 | + |
| 80 | +Keluaran dari perintah tersebut memperlihatkan bahwa belum ada _probe liveness_ yang gagal: |
| 81 | + |
| 82 | +``` |
| 83 | +FirstSeen LastSeen Count From SubobjectPath Type Reason Message |
| 84 | +--------- -------- ----- ---- ------------- -------- ------ ------- |
| 85 | +24s 24s 1 {default-scheduler } Normal Scheduled Successfully assigned liveness-exec to worker0 |
| 86 | +23s 23s 1 {kubelet worker0} spec.containers{liveness} Normal Pulling pulling image "k8s.gcr.io/busybox" |
| 87 | +23s 23s 1 {kubelet worker0} spec.containers{liveness} Normal Pulled Successfully pulled image "k8s.gcr.io/busybox" |
| 88 | +23s 23s 1 {kubelet worker0} spec.containers{liveness} Normal Created Created container with docker id 86849c15382e; Security:[seccomp=unconfined] |
| 89 | +23s 23s 1 {kubelet worker0} spec.containers{liveness} Normal Started Started container with docker id 86849c15382e |
| 90 | +``` |
| 91 | + |
| 92 | +Setelah 35 detik, lihatlah lagi _event_ Pod tersebut: |
| 93 | + |
| 94 | +```shell |
| 95 | +kubectl describe pod liveness-exec |
| 96 | +``` |
| 97 | + |
| 98 | +Baris terakhir dari keluaran tersebut memperlihatkan pesan bahwa _probe liveness_ |
| 99 | +mengalami kegagalan, dan Container telah dimatikan dan dibuat ulang. |
| 100 | + |
| 101 | +``` |
| 102 | +FirstSeen LastSeen Count From SubobjectPath Type Reason Message |
| 103 | +--------- -------- ----- ---- ------------- -------- ------ ------- |
| 104 | +37s 37s 1 {default-scheduler } Normal Scheduled Successfully assigned liveness-exec to worker0 |
| 105 | +36s 36s 1 {kubelet worker0} spec.containers{liveness} Normal Pulling pulling image "k8s.gcr.io/busybox" |
| 106 | +36s 36s 1 {kubelet worker0} spec.containers{liveness} Normal Pulled Successfully pulled image "k8s.gcr.io/busybox" |
| 107 | +36s 36s 1 {kubelet worker0} spec.containers{liveness} Normal Created Created container with docker id 86849c15382e; Security:[seccomp=unconfined] |
| 108 | +36s 36s 1 {kubelet worker0} spec.containers{liveness} Normal Started Started container with docker id 86849c15382e |
| 109 | +2s 2s 1 {kubelet worker0} spec.containers{liveness} Warning Unhealthy Liveness probe failed: cat: can't open '/tmp/healthy': No such file or directory |
| 110 | +``` |
| 111 | + |
| 112 | +Tunggu 30 detik lagi, dan verifikasi bahwa Container telah diulang kembali: |
| 113 | + |
| 114 | +```shell |
| 115 | +kubectl get pod liveness-exec |
| 116 | +``` |
| 117 | + |
| 118 | +Keluaran perintah tersebut memperlihatkan bahwa jumlah `RESTARTS` telah meningkat: |
| 119 | + |
| 120 | +``` |
| 121 | +NAME READY STATUS RESTARTS AGE |
| 122 | +liveness-exec 1/1 Running 1 1m |
| 123 | +``` |
| 124 | + |
| 125 | +## Mendefinisikan probe liveness dengan permintaan HTTP |
| 126 | + |
| 127 | +Jenis kedua dari _probe liveness_ menggunakan sebuah permintaan GET HTTP. Berikut ini |
| 128 | +berkas konfigurasi untuk Pod yang menjalankan Container dari image `k8s.gcr.io/liveness`. |
| 129 | + |
| 130 | +{{< codenew file="pods/probe/http-liveness.yaml" >}} |
| 131 | + |
| 132 | +Pada berkas konfigurasi tersebut, kamu dapat melihat Pod memiliki sebuah Container. |
| 133 | +_Field_ `periodSeconds` menentukan bahwa kubelet harus mengerjakan _probe liveness_ setiap 3 detik. |
| 134 | +_Field_ `initialDelaySeconds` memberitahu kubelet untuk menunggu 3 detik sebelum mengerjakan |
| 135 | +_probe_ yang pertama. Untuk mengerjakan _probe_ tersebut, kubelet mengirimkan sebuah permintaan |
| 136 | +GET HTTP ke server yang sedang berjalan di dalam Container dan mendengarkan (_listen_) pada porta 8080. |
| 137 | +Jika _handler path_ `/healthz` yang dimiliki server mengembalikan kode sukses, kubelet menganggap |
| 138 | +Container sedang dalam kondisi hidup dan sehat. Jika _handler_ mengembalikan kode gagal, |
| 139 | +kubelet mematikan Container dan mengulangnya kembali. |
| 140 | + |
| 141 | +Kode yang lebih besar atau sama dengan 200 dan kurang dari 400 mengindikasikan kesuksesan. |
| 142 | +Kode selain ini mengindikasikan kegagalan. |
| 143 | + |
| 144 | +Kamu dapat melihat kode program untuk server ini pada [server.go](https://github.com/kubernetes/kubernetes/blob/{{< param "githubbranch" >}}/test/images/agnhost/liveness/server.go). |
| 145 | + |
| 146 | +Untuk 10 detik pertama setelah Container hidup (_alive_), _handler_ `/healthz` mengembalikan |
| 147 | +status 200. Setelah itu, _handler_ mengembalikan status 500. |
| 148 | + |
| 149 | +```go |
| 150 | +http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) { |
| 151 | + duration := time.Now().Sub(started) |
| 152 | + if duration.Seconds() > 10 { |
| 153 | + w.WriteHeader(500) |
| 154 | + w.Write([]byte(fmt.Sprintf("error: %v", duration.Seconds()))) |
| 155 | + } else { |
| 156 | + w.WriteHeader(200) |
| 157 | + w.Write([]byte("ok")) |
| 158 | + } |
| 159 | +}) |
| 160 | +``` |
| 161 | + |
| 162 | +Pemeriksaan kesehatan (_health check_) dilakukan kubelet 3 detik setelah Container dimulai, |
| 163 | +sehingga beberapa pemeriksaaan pertama akan berhasil. Namun setelah 10 detik, |
| 164 | +pemeriksaan akan gagal, dan kubelet akan mematikan dan mengulang Container kembali. |
| 165 | + |
| 166 | +Untuk mencoba pemeriksaan _liveness_ HTTP, marilah membuat sebuah Pod: |
| 167 | + |
| 168 | +```shell |
| 169 | +kubectl apply -f https://k8s.io/examples/pods/probe/http-liveness.yaml |
| 170 | +``` |
| 171 | + |
| 172 | +Setelah 10 detik, lihatlah _event_ Pod untuk memverifikasi bahwa _probe liveness_ |
| 173 | +telah gagal dan Container telah diulang kembali: |
| 174 | + |
| 175 | +```shell |
| 176 | +kubectl describe pod liveness-http |
| 177 | +``` |
| 178 | + |
| 179 | +Untuk rilis sebelum v1.13 (termasuk v1.13), jika variabel lingkungan |
| 180 | +`http_proxy` (atau `HTTP_PROXY`) telah diatur pada Node dimana Pod |
| 181 | +berjalan, _probe liveness_ HTTP akan menggunakan proksi tersebut. |
| 182 | +Untuk rilis setelah v1.13, pengaturan variabel lingkungan pada proksi HTTP lokal |
| 183 | +tidak mempengaruhi _probe liveness_ HTTP. |
| 184 | + |
| 185 | +## Mendefinisikan probe liveness TCP |
| 186 | + |
| 187 | +Jenis ketiga dari _probe liveness_ menggunakaan sebuah soket TCP. Dengan konfigurasi ini, |
| 188 | +kubelet akan mencoba untuk membuka soket pada Container kamu dengan porta tertentu. |
| 189 | +Jika koneksi dapat terbentuk dengan sukses, maka Container dianggap dalam kondisi sehat. |
| 190 | +Namun jika tidak berhasil terbentuk, maka Container dianggap gagal. |
| 191 | + |
| 192 | +{{< codenew file="pods/probe/tcp-liveness-readiness.yaml" >}} |
| 193 | + |
| 194 | +Seperti yang terlihat, konfigurasi untuk pemeriksaan TCP cukup mirip dengan |
| 195 | +pemeriksaan HTTP. Contoh ini menggunakan _probe readiness_ dan _liveness_. |
| 196 | +_Probe readiness_ yang pertama akan dikirimkan oleh kubelet, 5 detik setelah |
| 197 | +Container mulai dijalankan. Container akan coba dihubungkan oleh kubelet dengan |
| 198 | +`goproxy` pada porta 8080. Jika _probe_ berhasil, maka Pod akan ditandai menjadi |
| 199 | +_ready_. Pemeriksaan ini akan dilanjutkan oleh kubelet setiap 10 detik. |
| 200 | + |
| 201 | +Selain _probe readiness_, _probe liveness_ juga termasuk di dalam konfigurasi. |
| 202 | +_Probe liveness_ yang pertama akan dijalankan oleh kubelet, 15 detik setelah Container |
| 203 | +mulai dijalankan. Sama seperti _probe readiness_, kubelet akan mencoba untuk |
| 204 | +terhubung dengan Container `goproxy` pada porta 8080. Jika _probe liveness_ gagal, |
| 205 | +maka Container akan diulang kembali. |
| 206 | + |
| 207 | +Untuk mencoba pemeriksaan _liveness_ TCP, marilah membuat sebuah Pod: |
| 208 | + |
| 209 | +```shell |
| 210 | +kubectl apply -f https://k8s.io/examples/pods/probe/tcp-liveness-readiness.yaml |
| 211 | +``` |
| 212 | + |
| 213 | +Setelah 15 detik, lihatlah _event_ Pod untuk memverifikasi _probe liveness_ tersebut: |
| 214 | + |
| 215 | +```shell |
| 216 | +kubectl describe pod goproxy |
| 217 | +``` |
| 218 | + |
| 219 | +## Menggunakan sebuah porta dengan nama |
| 220 | + |
| 221 | +Kamu dapat menggunakan |
| 222 | +[ContainerPort](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#containerport-v1-core) |
| 223 | +dengan nama untuk melakukan pemeriksaan _liveness_ HTTP atau TCP: |
| 224 | + |
| 225 | +```yaml |
| 226 | +ports: |
| 227 | +- name: liveness-port |
| 228 | + containerPort: 8080 |
| 229 | + hostPort: 8080 |
| 230 | + |
| 231 | +livenessProbe: |
| 232 | + httpGet: |
| 233 | + path: /healthz |
| 234 | + port: liveness-port |
| 235 | +``` |
| 236 | +
|
| 237 | +## Melindungi Container yang lambat untuk dimulai dengan probe startup {#mendefinisikan-probe-startup} |
| 238 | +
|
| 239 | +Terkadang kamu harus berurusan dengan aplikasi peninggalan (_legacy_) yang |
| 240 | +memerlukan waktu tambahan untuk mulai berjalan pada saat pertama kali diinisialisasi. |
| 241 | +Pada kasus ini, cukup rumit untuk mengatur parameter _probe liveness_ tanpa |
| 242 | +mengkompromikan respons yang cepat terhadap _deadlock_ yang memotivasi digunakannya |
| 243 | +probe_ tersebut. Triknya adalah mengatur _probe startup_ dengan perintah yang sama, |
| 244 | +baik pemeriksaan HTTP ataupun TCP, dengan `failureThreshold * periodSeconds` yang |
| 245 | +mencukupi untuk kemungkinan waktu memulai yang terburuk. |
| 246 | + |
| 247 | +Sehingga, contoh sebelumnya menjadi: |
| 248 | + |
| 249 | +```yaml |
| 250 | +ports: |
| 251 | +- name: liveness-port |
| 252 | + containerPort: 8080 |
| 253 | + hostPort: 8080 |
| 254 | +
|
| 255 | +livenessProbe: |
| 256 | + httpGet: |
| 257 | + path: /healthz |
| 258 | + port: liveness-port |
| 259 | + failureThreshold: 1 |
| 260 | + periodSeconds: 10 |
| 261 | +
|
| 262 | +startupProbe: |
| 263 | + httpGet: |
| 264 | + path: /healthz |
| 265 | + port: liveness-port |
| 266 | + failureThreshold: 30 |
| 267 | + periodSeconds: 10 |
| 268 | +``` |
| 269 | + |
| 270 | +Berkat _probe startup_, aplikasi akan memiliki paling lambat 5 menit (30 * 10 = 300 detik) |
| 271 | +untuk selesai memulai. |
| 272 | +Ketika _probe startup_ telah berhasil satu kali, maka _probe liveness_ akan |
| 273 | +mengambil alih untuk menyediakan respons cepat terhadap _deadlock_ Container. |
| 274 | +Jika _probe startup_ tidak pernah berhasil, maka Container akan dimatikan setelah |
| 275 | +300 detik dan perilakunya akan bergantung pada `restartPolicy` yang dimiliki Pod. |
| 276 | + |
| 277 | +## Mendefinisikan probe readiness |
| 278 | + |
| 279 | +Terkadang aplikasi tidak dapat melayani lalu lintas jaringan sementara. |
| 280 | +Contohnya, aplikasi mungkin perlu untuk memuat data besar atau berkas konfigurasi |
| 281 | +saat dimulai, atau aplikasi bergantung pada layanan eksternal setelah dimulai. |
| 282 | +Pada kasus-kasus ini, kamu tidak ingin mematikan aplikasi, tetapi kamu tidak |
| 283 | +ingin juga mengirimkan permintaan ke aplikasi tersebut. Kubernetes menyediakan |
| 284 | +_probe readiness_ sebagai solusinya. Sebuah Pod dengan Container yang melaporkan |
| 285 | +dirinya tidak siap, tidak akan menerima lalu lintas jaringan dari Kubernetes Service. |
| 286 | + |
| 287 | +{{< note >}} |
| 288 | +_Probe readiness_ dijalankan di dalam Container selama siklus hidupnya. |
| 289 | +{{< /note >}} |
| 290 | + |
| 291 | +_Probe readiness_ memiliki pengaturan yang mirip dengan _probe liveness_. Perbedaan |
| 292 | +satu-satunya adalah kamu menggunakan _field_ `readinessProbe`, bukan _field_ `livenessProbe`. |
| 293 | + |
| 294 | +```yaml |
| 295 | +readinessProbe: |
| 296 | + exec: |
| 297 | + command: |
| 298 | + - cat |
| 299 | + - /tmp/healthy |
| 300 | + initialDelaySeconds: 5 |
| 301 | + periodSeconds: 5 |
| 302 | +``` |
| 303 | + |
| 304 | +Pengaturan untuk _probe readiness_ untuk HTTP dan TCP juga sama persis dengan |
| 305 | +pengaturan untuk _probe liveness_. |
| 306 | + |
| 307 | +_Probe readiness_ dan _liveness_ dapat digunakan secara bersamaan untuk |
| 308 | +Container yang sama. Apabila keduanya digunakan sekaligus, lalu lintas jaringan |
| 309 | +tidak akan sampai ke Container yang belum siap, dan Container akan diulang kembali |
| 310 | +(_restart_) saat mengalami kegagalan. |
| 311 | + |
| 312 | +## Mengatur Probe |
| 313 | + |
| 314 | +{{< comment >}} |
| 315 | +Nantinya beberapa bagian dari bab ini dapat berpindah ke topik konsep. |
| 316 | +{{< /comment >}} |
| 317 | + |
| 318 | +[Probe](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#probe-v1-core) memiliki |
| 319 | +beberapa _field_ yang dapat digunakan untuk mengendalikan pemeriksaan _liveness_ dan _readiness_ |
| 320 | +secara presisi. |
| 321 | + |
| 322 | +* `initialDelaySeconds`: Durasi dalam detik setelah Container dimulai, |
| 323 | +sebelum _probe liveness_ atau _readiness_ diinisiasi. Nilai bawaannya adalah 0 detik. Nilai minimalnya adalah 0. |
| 324 | +* `periodSeconds`: Seberapa sering (dalam detik) _probe_ dijalankan. Nilai bawaannya adalah 10 detik. |
| 325 | +Nilai minimalnya adalah 0. |
| 326 | +* `timeoutSeconds`: Durasi dalam detik setelah _probe_ mengalami _timeout_. Nilai bawaannya adalah 1 detik. |
| 327 | +Nilai minimalnya adalah 0. |
| 328 | +* `successThreshold`: Jumlah minimal sukses yang berurutan untuk _probe_ dianggap berhasil |
| 329 | +setelah mengalami kegagalan. Nilai bawaannya adalah 1. Nilanya harus 1 untuk _liveness_. |
| 330 | +Nilai minimalnya adalah 1. |
| 331 | +* `failureThreshold`: Ketika sebuah Pod dimulai dan _probe_ mengalami kegagalan, Kubernetes |
| 332 | +akan mencoba beberapa kali sesuai nilai `failureThreshold` sebelum menyerah. Menyerah dalam |
| 333 | +kasus _probe liveness_ berarti Container akan diulang kembali. Untuk _probe readiness_, menyerah |
| 334 | +akan menandai Pod menjadi "tidak siap" (_Unready_). Nilai bawaannya adalah 3. Nilai minimalnya adalah 1. |
| 335 | + |
| 336 | +[_Probe_ HTTP](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#httpgetaction-v1-core) |
| 337 | +memiliki _field-field_ tambahan yang bisa diatur melalui `httpGet`: |
| 338 | + |
| 339 | +* `host`: Nama dari host yang akan terhubung, nilai bawaannya adalah IP dari Pod. Kamu mungkin |
| 340 | +juga ingin mengatur "Host" pada httpHeaders. |
| 341 | +* `scheme`: Skema yang digunakan untuk terhubung pada host (HTTP atau HTTPS). Nilai bawaannya adalah HTTP. |
| 342 | +* `path`: _Path_ untuk mengakses server HTTP. |
| 343 | +* `httpHeaders`: _Header_ khusus yang diatur dalam permintaan HTTP. HTTP memperbolehkan _header_ yang berulang. |
| 344 | +* `port`: Nama atau angka dari porta untuk mengakses Container. Angkanya harus ada di antara 1 sampai 65535. |
| 345 | + |
| 346 | +Untuk sebuah _probe_ HTTP, kubelet mengirimkan permintaan HTTP untuk _path_ yang ditentukan |
| 347 | +dan porta untuk mengerjakan pemeriksaan. _Probe_ dikirimkan oleh kubelet untuk alamat IP Pod, |
| 348 | +kecuali saat alamat digantikan oleh _field_ opsional pada `httpGet`. Jika _field_ `scheme` |
| 349 | +diatur menjadi `HTTPS`, maka kubelet mengirimkan permintaan HTTPS dan melewati langkah verifikasi |
| 350 | +sertifikat. Pada skenario kebanyakan, kamu tidak menginginkan _field_ `host`. |
| 351 | +Berikut satu skenario yang memerlukan `host`. Misalkan Container mendengarkan permintaan |
| 352 | +melalui 127.0.0.1 dan _field_ `hostNetwork` pada Pod bernilai true. Kemudian `host`, melalui |
| 353 | +`httpGet`, harus diatur menjadi 127.0.0.1. Jika Pod kamu bergantung pada host virtual, dimana |
| 354 | +untuk kasus-kasus umum, kamu tidak perlu menggunakan `host`, tetapi perlu mengatur _header_ |
| 355 | +`Host` pada `httpHeaders`. |
| 356 | + |
| 357 | +Untuk _probe_ TCP, kubelet membuat koneksi _probe_ pada Node, tidak pada Pod, yang berarti bahwa |
| 358 | +kamu tidak menggunakan nama Service di dalam parameter `host` karena kubelet tidak bisa |
| 359 | +me-_resolve_-nya. |
| 360 | + |
| 361 | +{{% /capture %}} |
| 362 | + |
| 363 | +{{% capture whatsnext %}} |
| 364 | + |
| 365 | +* Pelajari lebih lanjut tentang |
| 366 | +[Probe Container](/id/docs/concepts/workloads/pods/pod-lifecycle/#container-probes). |
| 367 | + |
| 368 | +Kamu juga dapat membaca rujukan API untuk: |
| 369 | + |
| 370 | +* [Pod](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#pod-v1-core) |
| 371 | +* [Container](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#container-v1-core) |
| 372 | +* [Probe](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#probe-v1-core) |
| 373 | + |
| 374 | +{{% /capture %}} |
0 commit comments