LoginSignup
1
3

More than 3 years have passed since last update.

できるだけ簡単にKubernetesする(Windows10)Part2

Last updated at Posted at 2020-06-28

前回は、kubernetesを使えるようになるところまでで、終了しました。

今回は、実際にコンテナを動かしてみます。

とはいっても、いきなりコンテナをたくさん動かすと、
コンテナ同士のつながりが、わけわからなくなってしまうので、
簡単さを目的として、最初は1つのみ動かしてみたいと思います。

もし、現在、Kubernetesを使っていないとしたら、
CentOS や Ubuntu を使われているかもしれません。

そのあたりが身近な気がするので、実際に動かしてみましょう。

コンテナを動かすためのファイル作成

では、コマンドプロンプトを起動して、

C:\Users\test>

今、test というアカウントで操作しているのですが、
この階層で作ると、ごちゃごちゃしそうなので、
kubernetesディレクトリを作っておこうと思います。

C:\Users\test> mkdir kubernetes

問題なく作れたら、kubernetesディレクトリに移動しましょう。

C:\Users\test> cd kubernetes

C:\Users\test\kubernetes>

では、ここの階層に sample.yaml というファイルを作ってみてください。
ファイルを作成したら、以下の内容を書き、保存します。

apiVersion: v1
kind: Pod
metadata:
  name: sample-pod
spec:
  containers:
    - name: sample-container
      image: centos

centos ではなく、ubuntu を使いたい、という場合は、
centos と書いてある部分を ubuntu に変更するだけでOKです。

kubernetes の最初は何かと yamlファイルを書くことが多く、
いきなり長いものが出てくると、やる気をそがれるので、
シンプルなものから始めます。

コンテナ作成

ファイルを保存しましたら、「kubectl apply -f sample.yaml」という
コマンドを実行してみましょう。
このコマンドの意味ですが、簡単にいうと、sample.yaml を適用するものだ、
と思ってもらえれば、いまのところは大丈夫です。

C:\Users\test\kubernetes> kubectl apply -f sample.yaml
pod/sample-pod created

pod/sample-pod created が出たら、OKです。

もしここでエラーが出るようであれば「dir」コマンドで、
ファイルが存在しているか、ファイル名が間違っていないか、
を確認してみてください。

C:\Users\test\kubernetes> dir

2020/06/16  18:19    <DIR>          .
2020/06/16  18:19    <DIR>          ..
2020/06/16  18:26               129 sample.yaml

うまくいっているようであれば「kubectl get pods」のコマンドで、
何かしら見えるはずです。

C:\Users\test\kubernetes> kubectl get pods
NAME         READY   STATUS              RESTARTS   AGE
sample-pod   0/1     ContainerCreating   0          1s

どうやら今、コンテナを作ってくれているようです。
少し待ってみます。

C:\Users\test\kubernetes> kubectl get pods
NAME         READY   STATUS      RESTARTS   AGE
sample-pod   0/1     Completed   0          5s

なぜか完了されてしまいました。
READY部分が 0 のままですと、基本使えるようにはなってないです。

もう少し待って確認してみたところ、

C:\Users\test\kubernetes> kubectl get pods
NAME         READY   STATUS             RESTARTS   AGE
sample-pod   0/1     CrashLoopBackOff   1          10s

なんかダメそうですので、「kubectl delete -f sample.yaml」で、
一度削除しておきましょう。

C:\Users\test\kubernetes> kubectl delete -f sample.yaml
pod "sample-pod" deleted

コンテナを起動したままにする

ダメだった理由なのですが、コンテナは自分の仕事をしたら完了しようとする、
からのようです。
私、最初、ここでつまづき、そこそこ時間を使いました。

なので、とりあえず、何かしら仕事を与えてあげたいと思います。

さっきの sample.yaml ファイルを以下に修正して、上書きしてください。
追加したのは、下の2行です。

apiVersion: v1
kind: Pod
metadata:
  name: sample-pod
spec:
  containers:
    - name: sample-container
      image: centos
      command: ["/bin/sleep"]
      args: ["600"]

600 秒間 sleep させてみます。
これで、600 秒間は、仕事が終わらないため、
完了できないはずです。

ファイルを保存したら、再度「kubectl apply -f sample.yaml」コマンドを実行します。

C:\Users\test\kubernetes> kubectl apply -f sample.yaml
pod/sample-pod created

作成はうまくいったようですが、さっきと変わったか確認してみます。

C:\Users\test\kubernetes> kubectl get pods
NAME         READY   STATUS              RESTARTS   AGE
sample-pod   0/1     ContainerCreating   0          1s

今回もここまでは変わらなそうですね。

C:\Users\test\kubernetes> kubectl get pods
NAME         READY   STATUS    RESTARTS   AGE
sample-pod   1/1     Running   0          6s

お、READY が 1/1 になり、Running ということは起動しているっぽいです。

コンテナへのアクセス

では、次に直接コンテナをさわってみたいので、
「kubectl exec -it sample-pod /bin/bash」を打ってみましょう。
このコマンドの意味ですが、sample-pod にアクセスするコマンドだ、
と思ってもらえれば、いまのところは問題ないかと思います。

C:\Users\test\kubernetes> kubectl exec -it sample-pod /bin/bash
[root@sample-pod /]#

ここまでくると、sshっぽい感じで、操作することが可能です。

やっと、Windows から逃れることができました。
ためしに、「cat /etc/redhat-release」コマンドで、
CentOS のバージョンを確認してみます。

[root@sample-pod /]# cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)

CentOS 8 ですね。

CentOS 6 → 7 よりは、変わらなかった気がしますが、
私、普段はまだ CentOS 7 を使っています。
もし CentOS 8 以外を使いたい場合は、
さっきの sample.yaml ファイルの image 部分を変更すればOKです。

ひとまず、exit で抜けて、一度削除しておきましょう。

[root@sample-pod /]# exit
exit

C:\Users\test\kubernetes> kubectl delete -f sample.yaml
pod "sample-pod" deleted

image の変更

では、どのように image 部分を変更するかですが、

Docker Hub の CentOS ページ
「Supported tags and respective Dockerfile links」という部分に、
使えるタグが載っています。

タグ付けは簡単でして、image 部分の centos のあとに、
:タグ名
と書くだけです。

たとえば、centos7.8.2003 のタグを使いたいとしたら、
以下のように修正します。

apiVersion: v1
kind: Pod
metadata:
  name: sample-pod
spec:
  containers:
    - name: sample-container
      image: centos:centos7.8.2003
      command: ["/bin/sleep"]
      args: ["600"]

これで、再度ファイルを apply して、

C:\Users\test\kubernetes> kubectl apply -f sample.yaml
pod/sample-pod created

コンテナの中に入って、バージョンを確認してみます。

C:\Users\test\kubernetes> kubectl exec -it sample-pod /bin/bash
[root@sample-pod /]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)

変わってますね、問題なさそうです。

ちなみに、タグを指定していない場合は、デフォルトが latest なので、
centos:latest を指定しているのと同じです。
latest の image が、CentOS 8 だったようです。

Docker Hubでコンテナ検索していただけると、
かなりいろいろ出てきますので、試しに好きな image を利用してみてください。

次回は、複数コンテナを動かしてみたいと思います。

1
3
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
1
3