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削除