type
status
date
slug
summary
tags
category
icon
password
书籍
今回は実際にEKSを通じてKubernetesはどういうものなのかを勉強しましょう!
完成図

1.AWS CloudFormationを使用してVPCを作成する
AWS CloudFormationを使用して、新しいVPCを作成します。このVPCには、2つのパブリックサブネットと2つのプライベートサブネットが含まれます。

1.1ymlファイルでVPCを構築
2.EC2インスタンスをセットアップする
AWS CloudFormationを使用して、eksctl、kubectlなどのツールがインストールされたEC2インスタンスを起動します。このインスタンスはEKSクラスターを管理するためのものです。

2.1YUMLファイルでEC2を立ち上げます
EC2が立ち上げたら、git、docker、eksctl、kubectlなどのツールがインストールされたかを確認
3.EKSクラスターを作成する
EC2インスタンスを使用して、EKSクラスターを作成します。これにより、EKSクラスターがVPC内にデプロイされます。

3.1EKSクラスタを作成
# EKSクラスタを作成する
注意:既存のVPCにEKSクラスタを作るには、少なくとも2*2のサブネットワークが必要です。プライベートネットワークがあるなら、NATも配置する必要があります。

15分を待ちます。
コンソールで、EKSが作成したことを確認

4.ノードをデプロイする
EC2インスタンスを介して、EKSクラスターにノードを作成します。これにより、クラスター内のノードが構成されます。

4.1EKSクラスタ内にノードグループを作成する
ノード数量を変更するコマンドを覚えましょう!
nodeの数を2に変更してみます。
YUMLテンプレートを反映するコマンド
4.2コンソールでノードの数を確認してみます

5AMロールを構成、CSIを実装
EKSクラスターに適切なIAMロールと権限を設定します。また、ノードにEBS CSIドライバーをインストールします。

5.1ローカルを作成
下記のコードを管理用EC2に打ちます
5.2CSI ドライバーを実装

AWS EBS CSI ドライバーは、Kubernetes クラスターで Amazon EBS ボリュームの永続ストレージを提供するための役割を担います。具体的には:
- ボリュームのプロビジョニング: ユーザーが要求した場合に、EBS ボリュームを自動的に作成します。これにより、Kubernetes のワークロードがデータを保存するためのストレージを簡単に確保できます。
- ボリュームのマウント: ノード上のポッドが EBS ボリュームを使用する際に、自動的にボリュームをノードにアタッチし、ポッド内のパスにマウントします。これにより、ポッドがデータにアクセスできるようになります。
- ボリュームの削除: ポッドが削除されると、関連する EBS ボリュームが自動的に削除されます。これにより、リソースの効率が向上し、不要なボリュームがクラスターに残ることがなくなります。
簡単に言えば、AWS EBS CSI ドライバーは、Kubernetes クラスターでデータの永続ストレージを管理し、ユーザーがデータに簡単にアクセスできるようにします。
6.wordpressプロジェクトを作成する
管理インスタンス上で、MySQLonEKSプロジェクトを作成します。このプロジェクトでは、YAMLファイルを使用してMySQLデータベースを構成し、プライベートサブネットに展開します。

wordpressディレクトリを作成し、その配下で、yumlファイルを作成します。
6.1StorageClass
StorageClass を使用してCSIの力で、動的な保存領域を割り当てできます。
6.2ConfigMap
ConfigMap を使用してデータベースの初期化スクリプトを設定します。
6.2Secrets
Secrets を使用して、秘密鍵を保存します。
dbpwdにBase64した暗号を入れます

6.3Deployment
MySql データベースサーバーの設定を作成します。
7.MySQLデータベースを公開する
MySQLデータベースを内部ネットワークに公開するために、Kubernetes Serviceリソースを作成します。

7.1Service
Service ClusterIP の内部公開は、同じ Kubernetes クラスター内の他のリソースにサービスを公開することを意味します。つまり、同じクラスター内の他の Pod やサービスは、ClusterIP を使用してそのサービスにアクセスできます。ClusterIP は、Kubernetes でデフォルトの Service タイプであり、Service を表す仮想 IP アドレスを作成し、Kubernetes の内部 DNS サービスを介して解決されます。この仮想 IP はクラスター内部でのみアクセス可能であり、クラスターの外部からは見えません。
そのため、Service ClusterIP の内部公開は、クラスター内のサービス間通信とアクセスを提供するためのものです。サービスをクラスターの外部に公開する必要がある場合は、NodePort、LoadBalancer、または Ingress などの他の Service タイプを使用する必要があります。
もし、一旦、管理用EC2で、MySqlが正常にアクセス出来るかを確認したいなら、一旦ServiceをNodePortに変更し、MySqlNodeのセキュリティグループのインバウンドを0.0.0.0に設定しときます。
7.2apply
先まで作ったMySqlサーバをデプロイします。
7.3管理用EC2でアクセス出来るかを検証


8.WordPressをデプロイする
WordPressのYAMLファイルを使用してWordPressを公開します。これにより、WordPressがパブリックサブネットに展開されます。

8.1wordpressのYUMLテンプレートを用意します。
Deployment
kubectl get nodes --show-labelsで、実際に配置したいノードのタグを調べてnodeSelectorで関連付けます。
9.新たなノードを作成して、WordPressをデプロイする
9.1eksctl create nodegroup
5分待ちます
9.2Service
10.ALBリソースを設定する
ALBリソースを使用してWordPressサービスに接続し、外部ネットワークにサービスを公開します。

10.1ALB
Kubernetes Serviceリソースを使用して、WordPressサービスを内部ネットワークに公開してから、ALBリソースで、外部に展開する。
10.2デプロイします。
11.HTTPでをアクセスしてみます
kubectl get allでアクセスするALBのDNSを調べて、ブラウザから、アクセス出来るどうかを確認します。



📎 参考文章
- 一些引用
- 引用文章
有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
- 作者:みなみ
- 链接:https://www.minami.ac.cn//%E8%B3%87%E6%A0%BC%E5%8B%89%E5%BC%B7/560b76b6-5729-4ac7-94ab-8a1295442302
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章