仮想化通信

日本仮想化技術株式会社の公式エンジニアブログ

KubernetesでPodを作る方法

KubernetesでPodを作る方法は公式のドキュメント「Kubernetes 101」にまとめられていますし、Web検索すると同じような内容のブログ記事やフォーラムのFAQが見つかります。

多くの人がこんな内容のYAMLファイルを書いて、Nginx 1.7.9をデプロイしたはずです。 ちなみにDocker HubのNginxのタグ一覧を見る限り、1.13.11が最新です。

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.7.9
    ports:
    - containerPort: 80

では、「Nginxではなく、FedoraとかUbuntuとかCentOSとか、そういった環境をPodを作って動かしたい時はどうするか」と思ったのでその方法を調査することから始めました。

ます確認したのはKubernetes公式のドキュメントです。隅々見たつもりですが、残念ながら有力な情報は見つけられませんでした。そこでさらに色々調べたところ、次のようなサイトの情報を見つけることができました。

foxutech.com

必要な部分だけ抜き出すと、「spec - containers」にDockerのイメージと次のような記述を入れると良いようです。勘が良いかたは気がつくと思いますが、この内容でPodを作った場合Podは1000秒経過すると、自動的に終了してしまいます。なんかあの作品っぽいですね。

...
spec:
  containers:
  - name: shell
    image: centos:7
    command:
      - "bin/bash"
      - "-c"
      - "sleep 1000"

これでは場合によっては困るので、他の方法を考えてみました。

apiVersion: v1
kind: Pod
metadata:
  name: fedora
spec:
  restartPolicy: OnFailure
  containers:
    - name: fedora
      image: fedora:latest
      command:
        - "/sbin/init"

コマンドとしてInitを実行してみました。このようなYAMLを書いてkubectl create -f deploy.ymlすると、Fedoraが起動するPodを作ることができます。一応、手元の環境ではうまく動いていました。

metadataにnameとしてPodの名前を記述しておくと、その名前でPodが作成されます。imagesはデフォルトではDocker Hubに登録されたイメージが使われます。