From a09479928a67b9bdd7fce49feed6ddc259344532 Mon Sep 17 00:00:00 2001 From: Irvi Aini <7439590+irvifa@users.noreply.github.com> Date: Sun, 29 Sep 2019 12:39:37 +0200 Subject: [PATCH] Adding entries to Pod /etc/hosts with HostAliases for ID localization. (#16009) * Adding entries to Pod /etc/hosts with HostAliases for ID localization. * Fix language consistency based on input. * Fix broken build. --- ...ries-to-pod-etc-hosts-with-host-aliases.md | 131 ++++++++++++++++++ .../service/networking/hostaliases-pod.yaml | 22 +++ 2 files changed, 153 insertions(+) create mode 100644 content/id/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases.md create mode 100644 content/id/examples/service/networking/hostaliases-pod.yaml diff --git a/content/id/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases.md b/content/id/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases.md new file mode 100644 index 0000000000..50ecaa9676 --- /dev/null +++ b/content/id/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases.md @@ -0,0 +1,131 @@ +--- +title: Menambahkan Entry pada /etc/hosts Pod dengan HostAliases +content_template: templates/concept +weight: 60 +--- + +{{< toc >}} + +{{% capture overview %}} +Menambahkan entri pada berkas /etc/hosts Pod akan melakukan _override_ +resolusi _hostname_ pada level Pod ketika DNS dan opsi lainnya tidak tersedia. +Pada versi 1.7, pengguna dapat menambahkan entri yang diinginkan beserta _field_ HostAliases +pada PodSpec. + +Modifikasi yang dilakukan tanpa menggunakan HostAliases tidaklah disarankan +karena berkas ini diatur oleh Kubelet dan dapat di-_override_ ketika Pod dibuat/di-_restart_. +{{% /capture %}} + +{{% capture body %}} + +## Isi Default pada Berkas `Hosts` + +Misalnya saja kamu mempunyai sebuah Pod Nginx yang memiliki sebuah IP Pod: + +```shell +kubectl run nginx --image nginx --generator=run-pod/v1 +``` + +```shell +pod/nginx created +``` + +Perhatikan IP Pod tersebut: + +```shell +kubectl get pods --output=wide +``` + +```shell +NAME READY STATUS RESTARTS AGE IP NODE +nginx 1/1 Running 0 13s 10.200.0.4 worker0 +``` + +_File_ `hosts` yang ada akan tampak sebagai berikut: + +```shell +kubectl exec nginx -- cat /etc/hosts +``` + +```none +# Berkas hosts yang dikelola Kubernetes +127.0.0.1 localhost +::1 localhost ip6-localhost ip6-loopback +fe00::0 ip6-localnet +fe00::0 ip6-mcastprefix +fe00::1 ip6-allnodes +fe00::2 ip6-allrouters +10.200.0.4 nginx +``` + +Secara default, berkas `hosts` hanya berisikan _boilerplate_ alamat IP IPv4 and IPv6 seperti +`localhost` dan hostname dari Pod itu sendiri. + +## Menambahkan Entri Tambahan dengan HostAliases + +Selain _boilerplate default_, kita dapat menambahkan entri pada berkas +`hosts` untuk melakukan resolusi `foo.local`, `bar.local` pada `127.0.0.1` dan `foo.remote`, +`bar.remote` pada `10.1.2.3`, kita dapat melakukannya dengan cara menambahkan +HostAliases pada Pod di bawah _field_ `.spec.hostAliases`: + +{{< codenew file="service/networking/hostaliases-pod.yaml" >}} + +Pod ini kemudian dapat dihidupkan dengan perintah berikut: + +```shell +kubectl apply -f hostaliases-pod.yaml +``` + +```shell +pod/hostaliases-pod created +``` + +Perhatikan IP dan status Pod tersebut: + +```shell +kubectl get pod --output=wide +``` + +```shell +NAME READY STATUS RESTARTS AGE IP NODE +hostaliases-pod 0/1 Completed 0 6s 10.200.0.5 worker0 +``` + +_File_ `hosts` yang ada akan tampak sebagai berikut: + +```shell +kubectl logs hostaliases-pod +``` + +```none +# Berkas hosts yang dikelola Kubernetes +127.0.0.1 localhost +::1 localhost ip6-localhost ip6-loopback +fe00::0 ip6-localnet +fe00::0 ip6-mcastprefix +fe00::1 ip6-allnodes +fe00::2 ip6-allrouters +10.200.0.5 hostaliases-pod + +# Entries added by HostAliases. +127.0.0.1 foo.local bar.local +10.1.2.3 foo.remote bar.remote +``` + +Dengan tambahan entri yang telah dispesifikasikan sebelumnya. + +## Kenapa Kubelet Melakukan Mekanisme Manajemen Berkas `Hosts`? + +Kubelet [melakukan proses manajemen](https://github.com/kubernetes/kubernetes/issues/14633) +berkas `hosts` untuk setiap container yang ada pada Pod untuk mencegah Docker melakukan +[modifikasi](https://github.com/moby/moby/issues/17190) pada berkas tersebut +setelah kontainer dihidupkan. + +Karena sifat dari berkas tersebut yang secara otomatis di-_manage_, +semua hal yang didefinisikan oleh pengguna akan ditimpa (_overwrite_) ketika berkas +`hosts` di-_mount_ kembali oleh Kubelet ketika ada kontainer yang di-_restart_ +atau Pod di-_schedule_ ulang. Dengan demikian tidak dianjurkan untuk +memodifikasi berkas tersebut secara langsung. + +{{% /capture %}} + diff --git a/content/id/examples/service/networking/hostaliases-pod.yaml b/content/id/examples/service/networking/hostaliases-pod.yaml new file mode 100644 index 0000000000..643813b34a --- /dev/null +++ b/content/id/examples/service/networking/hostaliases-pod.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Pod +metadata: + name: hostaliases-pod +spec: + restartPolicy: Never + hostAliases: + - ip: "127.0.0.1" + hostnames: + - "foo.local" + - "bar.local" + - ip: "10.1.2.3" + hostnames: + - "foo.remote" + - "bar.remote" + containers: + - name: cat-hosts + image: busybox + command: + - cat + args: + - "/etc/hosts"