株式会社ヴァンデミックシステム

Blog

<スポンサーリンク>

k3d

  • Kubernetes
  • k3sは1ノード専門だけれど、そのk3sを複数ノードで起動してクラスタ化してくれる
  • Docker上で動き、1つのノードが1コンテナ扱いで起動される

環境

  • AWS EC2
  • Amazon Linux 2

Dockerが動いていれば、Macでもいける模様

前提条件

yum -y install docker
systemctl start docker

k3dインストール

curl -s https://raw.githubusercontent.com/rancher/k3d/master/install.
sh | バッシュ

kubectlインストール

curl -LO https://storage.googleapis.com/kubernetes-release/release/
`curl -s https://storage.googleapis.com/kubernetes-release/release/
stable.txt`/bin/linux/amd64/ kubectl
chmod + x ./kubectl
sudo mv ./kubectl / usr / local / bin / kubectl
kubectlのバージョン

クラスタ作成

k3d作成

環境変数

KUBECONFIG = $(k3d get-kubeconfig)をエクスポート

ポッド確認

kubectl get pods --all-namespaces

削除

k3d削除

nginxを活用してみるテスト

nginx-deployment.yaml
apiVersion  拡張/ v1beta1 
種類 展開の
メタデータ
  名前 nginxの
スペック
  レプリカ 1つの
  テンプレート
    メタデータ
      ラベル
        アプリ nginxの
    仕様
      コンテナ
      -  名前 nginxの
        画像 nginxの:1.7.5 
        ポート
        -  containerPort  80

展開

kubectl apply -f nginx-deployment.yaml

Podへ接続するためのサービス配備

kubectlがdeployment / nginx --type = "NodePort" --port 80を公開します
kubectl get service

拒否される

[root @ ip-172-31-47-223〜]#curl -i http:// localhost:30757
curl:(7)localhostポート30757への接続に失敗:接続が拒否されました

再チャレンジ

公式ドキュメントをみるとIngressとNodePortでの展開方法が説明されている

イングレス

k3d create --api-port 6550 --publish 8081:80 --workers 2
エクスポートKUBECONFIG = "$(k3d get-kubeconfig --name = 'k3s-default')"
kubectl create deployment nginx --image = nginx
kubectl create service clusterip nginx --tcp = 80:80
nginx-ingress.yaml
apiVersion  拡張/ v1beta1 
種類 イングレスの
メタデータ
  名前 nginxの
  注釈
    ingress.kubernetes.io/ssl-redirect  " 偽" 
スペック
  ルール
  -  のhttp 
      パス
      -  パス / 
        バックエンド
          serviceNameは nginxの
          SERVICEPORT  80
kubectl apply -f nginx-ingress.yaml
curl localhost:8081 /
k3d削除

NodePort

NodePortのPortへ直接アクセスしても接続できない。
下のコマンドの場合、NodePortのポートをローカルのポートと紐づけてあげるということをしているみたい。よくよく考えてみると、ローカル
ではなくDocker上で動作をしているので、このような操作が必要なのかも。

k3d create --publish 8082:30080 @ k3d-k3s-default-worker-0 --workers 2

dockerコンテナの数は3つで、デフォルトサーバ1つとワーカー2つ

[root @ ip-172-31-47-223〜]#docker ps
コンテナーIDイメージコマンド作成されたステータスポート名
da228d6d1786 rancher / k3s:v0.7.0 "/ bin / k3s agent" 
23分前アップ23分k3d-k3s-default-worker-1
b68c0032047f rancher / k3s:v0.7.0 "/ bin / k3s agent" 
23分前に23分前0.0.0.0:8082->30080/tcp k3d-k3s-default-worker-0
f2209b7494ea rancher / k3s:v0.7.0 "/ bin / k3s server --h…" 
23分前に23分0.0.0.0:6443->6443/tcp k3d-k3s-default-server
エクスポートKUBECONFIG = "$(k3d get-kubeconfig --name = 'k3s-default')"
kubectl create deployment nginx --image = nginx
nginx-nodeport.yaml
apiVersion  v1 
種類 サービス
メタデータ
  ラベル
    app  nginx 
  名前 nginx 
仕様
  ポート
  -  名前 80-80 
    nodePort  30080 
    ポート 80 
    プロトコル TCP 
    targetPort  80 
  セレクター
    app  nginx 
  タイプ NodePort
kubectl apply -f nginx-nodeport.yaml
curl localhost:8082 /
k3s削除

参考

https://github.com/rancher/k3d

<スポンサーリンク>

コメントを残す

Allowed tags:  you may use these HTML tags and attributes: <a href="">, <strong>, <em>, <h1>, <h2>, <h3>
Please note:  all comments go through moderation.

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)