LoginSignup
9
6

More than 5 years have passed since last update.

kubernetes 1.7で導入された hostAliasesを試してみる

Last updated at Posted at 2017-07-27

前書き

Kubernetes1.7でhostAliasesが導入された
https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG.md#downloads-for-v170
今回hostAliasesを検証してみたので検証結果を示す。
なお、GKE上で動作検証を行っている。

hostAliasesとは

pod levelで/etc/hostsを上書き出来る機能。

use-case

  • 例えばMySQLはGCEで運用したいという場合でかつドメインでアクセスしたい場合
    • インスタンスのIPが192.168.2.4 ドメインがdb.example.jpとした場合、
    • 基本的にdbのドメインはDNS登録したくない。hostsで登録したい
  • 社内専用システム等ドメインを登録したくないサービスにアクセスしたい場合
    • 社内専用の認証システムが 192.168.27 oauth.example.jpの場合
    • これもhostsで解決したい

などが考えられる。

設定

今回はkubernetes-guestbookに設定を追加してみる

spec.template.spec.hostAliasesとして追加することになる

frontend-deployment.yamlを一部抜粋

 template:
    metadata:
      labels:
        app: guestbook
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: gcr.io/google-samples/gb-frontend:v4
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 80
      hostAliases:
      - hostnames:
        - mydb1.jp
        ip: 192.168.0.3
      - hostnames:
        - mydb2.jp
        ip: 192.168.0.4

hostnamesにドメインとipをセットで書く

確認

今回はpodにexec して /etc/hostsを確認してみる

kubectl get pods
kubectl exec -it frontend-......-.... bash -

# cat /etc/hosts
# Kubernetes-managed hosts file.
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.32.0.13  frontend-2019487900-ctsm6
192.168.0.3 mydb1.jp
192.168.0.4 mydb2.jp

とyamlで指定した hostsが追加されていることがわかる。

同一IPで複数hostがある場合

https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
のマニュアルの用に、 1IPに対して複数hostsを並べればいい。

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6