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

<スポンサーリンク>

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

*

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