忍者ブログ

設備のマニアどっとこむ

IoT開発、設備・DIYのブログ!

Raspberry piではじめるKubernetes入門



前回からkubernetes環境を構築してます。ラズパイは3B、3B+、4の3台。
ちょっと今回はローカルのdocker imageをkubernetesでデプロイしてみます。

まずは正常に動作してるか確認します。


kubectl get node

3台分STATUSがReadyであれば大丈夫です。

①kubernetesでデプロイするためのdocker imageの準備

まずはワーカーノードのラズパイで下記のようなDockerfileを作成します。

FROM httpd:2.4
COPY ./public-html/ /usr/local/apache2/htdocs/

Dockerfileと同じフォルダの中にpublic-htmlというフォルダを作り、index.htmlという名前で下記ファイルを作ります。


<!DOCTYPE HTML>


<html lang="ja">


<head>


  <meta charset="UTF-8">


  <title>title</title>


</head>


<body>


  hello world


</body>


</html>

Dockerfileを作った任意のフォルダでdocker imageをビルドします。

docker build -t my-apache2 /home/pi/<任意のフォルダ>
ビルドが問題なく終了したらdocker imagesコマンドでmy-apache2が存在していることを確認します。
②docker imageをkubernetesでデプロイ

マスターノードになっているラズパイで下記ファイルをyamlという拡張子で保存します。
デプロイするためのマニュフェストになります。
apiVersion: apps/v1
kind: Deployment
metadata:
  name: <自由>
spec:
  selector:
    matchLabels:
       role: app
  replicas: 2 
  template:
    metadata:
      labels:
         role: app
    spec:
      containers:
      - name: my-apache2 
        image: my-apache2 
        imagePullPolicy: Never
        ports:


imageのところでdocker imageを指定します。imagePullPolicy: Neverにしているのはローカルのdocker imageを取得したいからです。
  replicas: は仮想化されたコンテナであるpodの数を指定します。これが多いとリソース的にきびしいので2でいいと思います。
作成できたらデプロイします。

kubectl apply -f  <作成したマニュフェスト名>.yaml

kubectl  get pod  コマンドでpodがレプリカ数だけ作成されるのを確認します。



余計なpodがありますが… デプロイしたmy-apache2~が2つできていたら成功です。
※READYが1/1でありRunningを確認してください。ErrImageNeverPull とでていたら
docker imageの取得に失敗しています。


③作成したpodにIPアドレスを振ってhello worldする

作成したhtmlファイルをブラウザで確認するためにIPを振っていきます。(マスターノードのラズパイで実行します)
kubectl expose deployment/my-apache2 --name="my-apache2-svc" --type="ClusterIP" --port=8080 --target-port=80
作成されたIPを確認します。

kubectl get svc/my-apache2-svc



CLUSTERーIPのところを確認してください。

ブラウザで <CLUSTERーIP>:8080と入力すると…


できました!! これは3台のラズパイすべてで確認できます。ひとつのラズパイで作成したdocker imageをpodとして複製し、3台のウェブサーバーとして運用することができました。 

この状態でためしにdocker imageをビルドしたラズパイの電源をoffしてもほかのラズパイのブラウザでhello worldが確認できるはずです。kubernetesで冗長性を体験できました。

twitterボットをkubernetesで冗長化しました。

↓参考文献↓



 





拍手[0回]

PR

コメント

翻訳(Translate)

プロフィール

HN:
佐々木 雅史
性別:
男性
自己紹介:
2021年 ラズパイ、M5stackを用いたIoT開発を専門で受注するアルティメンテを設立。代表を務める。
・2020年ラズパイコンテスト優良賞受賞
・設備系資格多数(電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士補(電気・電子)、エネ電、フォークリフトなど)

AD

カレンダー

10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30