シナリオによっては、Elastic Container Instance ベースのポッドの hosts を構成する必要がある場合があります。たとえば、自己管理型イメージリポジトリからイメージをプルする場合、hosts ファイルを使用してイメージリポジトリの実際の IP アドレスを指定する必要があります。このトピックでは、/etc/hosts ファイルを変更することで、Elastic Container Instance ベースのポッドの hosts を構成する方法について説明します。
構成の説明
k8s.aliyun.com/eci-custom-hosts アノテーションを使用して、ポッドの hosts を構成できます。IP アドレスとドメイン名の複数のマッピングを指定できます。マッピングの形式は {\"host\":\"example.com\",\"ip\":\"100.100.XX.XX\"}です。
アノテーションは、ポッドの構成ファイルのメタデータに追加する必要があります。たとえば、Deployment を作成する場合、spec.template.metadata セクションにアノテーションを追加する必要があります。
Elastic Container Instance の機能を使用するには、Elastic Container Instance ベースのポッドを作成するときにのみアノテーションを追加できます。ポッドを更新するときにアノテーションを追加または変更した場合、これらのアノテーションは有効になりません。
構成例
たとえば、自己管理型イメージリポジトリからイメージをプルする場合、hosts ファイルを使用してイメージリポジトリの実際の IP アドレスを指定する必要があります。hosts の YAML ファイル:
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 1
selector:
matchLabels:
app: test
template:
metadata:
name: test
labels:
app: test
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-custom-hosts: "[{\"host\":\"example.com\",\"ip\":\"100.100.XX.XX\"},{\"host\":\"aliyundoc.com\",\"ip\":\"100.100.XX.XX\"}]"
spec:
containers:
- name: nginx
image: example.com/test/nginx:latest
ports:
- containerPort: 80
- name: busybox
image: aliyundoc.com/test/busybox:1.30
command: ["sleep"]
args: ["999999"]