Azure KubernetesとAzure Database for MySQLを使ってWordPress Containerを動かす
首先
Azure Kubernetes Service(AKS)が2018年6月26日付けで日本リージョンで利用可能になりました。
まずはお試しとして、WordPressのDocker ContainerをAKS上で動かしました。
データベースであるMySQLはAzureのDatabase as a Service(DaaS)であるAzure Database for MySQLを利用します。
或许有人会说「用App Services和Azure Database for MySQL不挺好吗」,但如果你有这种想法,请参考这篇文章。
利用App Service和Azure Database for MySQL来简单构建一个WordPress网站。
构成的说明
请给出以下中文的本地语言翻译,只需提供一种选项:
AKS
-
Docker Hubで提供されている「wordpress」コンテナをそのまま利用。
wordpressコンテナを動かすPodは1つ。
外部ロードバランサを作成して(今回はとりあえず) http(TCP/80)によるアクセスを可能にする
永続化領域(/var/www/html)はAKSが提供しているストレージクラスを利用
Azure Database for MySQLに繋げられるようにExternalNameも作成する
Azure数据库用于MySQL
AKSからの接続にはサービスエンドポイント(Preview)を使って内部経路でアクセスする
内部経路でアクセスするため、とりあえず今回はSSL接続は強制せずにTCP/3306でWordPressから繋げる
AzureでKubernetesを利用する際のポイント
内部経路でアクセスするため、とりあえず今回はSSL接続は強制せずにTCP/3306でWordPressから繋げる
对于特别利用AKS的情况来说,以下是一些与Azure专门构建相关的要点。
存储空间
在AKS中,默认定义了以下存储类,并且可以轻松地使用Azure Managed Disk。
请参考:包含Azure磁盘的持久化卷。
公共IP地址
只需在 Azure 上部署 AKS 的资源组(MC_<资源组名称>
参考 : Azure Kubernetes Service (AKS) ロード バランサーで静的 IP アドレスを使用する
Azure 数据库 for MySQL 可以进行私有连接。
虽然仍处于预览阶段,但通过使用服务终端点功能,我们将限制连接,使其仅能从AKS的虚拟网络访问。
使用Azure门户创建和管理Azure Database for MySQL VNet的服务终点和VNet规则。
MySQLでサービスエンドポイントを利用する時は、汎用サーバーとメモリ最適化サーバーでのみサポートされるため、Azure利用料としては泣けてきますw
AKS的部署
ノード数はデフォルトの「3」のままだとAzureの課金が心配なので、今回は検証目的であるため「1」に変更しました。
他の必須項目はご自身の環境に併せて適宜入力します。
(ここではAzureポータルの詳細な操作説明は除きます)
部署Azure Database for MySQL
登录Azure门户后,从“Azure Marketplace”中查找并创建“Azure Database for MySQL”。
创建公共IP地址
AKS部署的准备工作
在控制Kubernetes时,基本上会使用”kubectl”命令。由于在客户端个人电脑上安装此命令通常需要额外步骤,所以本次我们将使用可以从Azure门户启动的Cloud Shell。
一旦打开Cloud Shell(bash)控制台后,您只需输入以下命令即可执行kubectl。
$ az aks get-credentials --resource-group <Resource Group Name> --name <AKS Name>
Merged "<AKS Name>" as current context in /home/yoshimasa_katakura/.kube/config
AKS 上部署各种服务
创建秘密
在MySQL部署时,可以使用Kubernetes的密钥来创建指定的管理员密码。这样可以避免将密码直接写在yaml文件中。
$ kubectl apply secret generic wp-secrets --from-literal=WORDPRESS_DB_PASSWORD=<PASSWORD>
创建MySQL的ExternalName
MySQLのエンドポイント名も環境依存になるため、WordPress本体のyamlファイルに記載はせずに、ExternalNameとして最初に作成します。
准备以下的yaml文件。
将externalName设置为先前创建的MySQL服务器的名称。
apiVersion: v1
kind: Service
metadata:
name: azure-mysql
spec:
type: ExternalName
externalName: XXX.mysql.database.azure.com (ここは適宜変更)
使用以下命令进行创建。
$ kubectl apply -f mysql-service.yaml
创建用于传递给WordPress的环境变量的配置地图(ConfigMap)。
除了上述密碼之外,還需要準備環境變數來傳遞給WordPress的容器。將這樣的環境相依值放在另一個yaml文件中,可以提高後續的維護性。將WORDPRESS_DB_USER設定為先前創建的MySQL服務器的管理員登錄名。
apiVersion: v1
kind: ConfigMap
metadata:
name: wp-configmap
data:
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: dbadmin@aks-mysql (ここは適宜変更)
WORDPRESS_DB_HOST: azure-mysql:3306
用下面的指令创建。
$ kubectl apply -f wp-configmap.yaml
创建永久化存储
由于我们将使用Azure的Standard Disk作为持久性存储,因此在storage-class中指定为“default”。
我们暂时保留了5Gi的大小,但请根据需要进行适当调整。
由于它将被挂载在/var/www/html目录下,在使用WordPress进行大量媒体文件上传时,可能需要将其调整得更大。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: wp-azure-disk
annotations:
volume.beta.kubernetes.io/storage-class: default
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
使用以下命令创建。
$ kubectl apply -f wp-storage.yaml
创建外部负载均衡器
为了使WordPress能够从互联网访问,我们将创建一个外部负载均衡器。
在yaml文件中,将先前创建的Azure公共IP地址的值设置为相同的IP地址。
apiVersion: v1
kind: Service
metadata:
name: wp-external-lb
spec:
loadBalancerIP: XX.XX.XX.XX (ここは適宜変更)
type: LoadBalancer
ports:
- port: 80
selector:
app: wordpress
用以下命令进行创建。
$ kubectl apply -f wp-lb.yaml
顺便一提,当执行此命令时,将会更改Azure上的负载均衡器资源“kubernetes”的配置,并添加从指定的公共IP地址负载均衡到Kubernetes节点的设置。
建立WordPress网站
完成以下的任务后,接下来将创建WordPress的部署。
シークレット(Secrets)「wp-secrets」
環境変数(ConfigMap)「wp-configmap」
永続化ストレージ(PersistentVolumeClaim)「wp-azure-disk」
MySqlのExternalName「mysql-service」
ロードバランサー(LoadBalancer)「wp-external-lb」
このyamlファイル内には環境に依存した記述が一切ありませんね。
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress
labels:
app: wordpress
spec:
replicas: 1
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
containers:
- name: wordpress
image: wordpress
envFrom:
- configMapRef:
name: wp-configmap
- secretRef:
name: wp-secrets
ports:
- containerPort: 80
name: wordpress
volumeMounts:
- name: wp-azure-disk
mountPath: /var/www/html
volumes:
- name: wp-azure-disk
persistentVolumeClaim:
claimName: wp-azure-disk
以下のコマンドで作成します。
$ kubectl apply -f wp-service.yaml
确认行动
在AKS上确认部署状态。
もっと前のタイミングでも良いのですが、AKS上に作成した各種ワークロードの確認をします。
# シークレットの状態確認
$ kubectl get secrets
NAME TYPE DATA AGE
azure-storage-account-ktkraksst01-secret Opaque 2 4d
default-token-bjsjg kubernetes.io/service-account-token 3 8d
wp-secrets Opaque 1 2h
# 環境変数の状態確認
$ kubectl get configmap
NAME DATA AGE
wp-configmap 3 11h
# 永続化ストレージの状態確認
$ kubectl get persistentVolumeClaim
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
wp-azure-disk Bound pvc-e4f26c86-8c02-11e8-b0bf-da69366a1397 5Gi RWO default 1d
# ExternalNameとLoadbalancer(両方共service)の状態確認
$ kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-mysql ExternalName <none> aks-mysql.mysql.database.azure.com <none> 1d
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 8d
wp-external-lb LoadBalancer 10.0.145.26 XX.XX.XX.XX 80:31367/TCP 25m
# WordPressのPodの状態確認
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
wordpress-5fbc6d9cc8-mhd8h 1/1 Running 0 2h
要查看 WordPress 中 Pod 的详细信息,请输入以下命令。
$ kubectl describe pod wordpress-5fbc6d9cc8-mhd8h
Name: wordpress-5fbc6d9cc8-mhd8h
Namespace: default
Node: aks-agentpool-10122857-1/10.240.0.4
Start Time: Sun, 22 Jul 2018 10:15:26 +0900
Labels: app=wordpress
pod-template-hash=1967285774
Annotations: <none>
Status: Running
IP: XX.XX.XX.XX
Controlled By: ReplicaSet/wordpress-5fbc6d9cc8
Containers:
wordpress:
Container ID: docker://2e39cffc356eba2b9e634d143dd2887df7d2da4255b10835876732b0bd45d30a
Image: wordpress
Image ID: docker-pullable://wordpress@sha256:1958b7258b1e1b09bbec1c6269e2e150bcc85c18383aa2420d95cb95a30d107f
Port: 80/TCP
Host Port: 0/TCP
State: Running
Started: Sun, 22 Jul 2018 10:16:10 +0900
Ready: True
Restart Count: 0
Environment Variables from:
wp-configmap ConfigMap Optional: false
wp-secrets Secret Optional: false
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-bjsjg (ro)
/var/www/html from wp-azure-disk (rw)
Conditions:
Type Status
Initialized True
Ready True
PodScheduled True
Volumes:
wp-azure-disk:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: wp-azure-disk
ReadOnly: false
default-token-bjsjg:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-bjsjg
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events: <none>
ConditionsのReadyが「True」になっているので準備完了です。
实际上连接到WordPress网站
可以通过直接在浏览器中输入之前创建的公共IP地址,或者通过输入指定的FQDN(全限定域名)”XXX.japanease.cloudapp.azure.com”来连接WordPress网站。
最后
今回の記事ではKubernetesそのもののベストプラクティスについての話ではなく、Azure Kubernetes Service(AKS)の概要を中心に記載しました。
Azure Kubernetes Serviceを利用していく上でAzureの関連サービスをうまく連携して活用していく上で参考になればと思います。
最后,我已经将这次使用的所有yaml文件上传到GitHub,请随意使用。
https://github.com/katakura/aks-wordpress 这个链接是一个用于AKS的WordPress项目的GitHub仓库。


ノード数はデフォルトの「3」のままだとAzureの課金が心配なので、今回は検証目的であるため「1」に変更しました。
他の必須項目はご自身の環境に併せて適宜入力します。
(ここではAzureポータルの詳細な操作説明は除きます)
部署Azure Database for MySQL
登录Azure门户后,从“Azure Marketplace”中查找并创建“Azure Database for MySQL”。







创建公共IP地址
AKS部署的准备工作
在控制Kubernetes时,基本上会使用”kubectl”命令。由于在客户端个人电脑上安装此命令通常需要额外步骤,所以本次我们将使用可以从Azure门户启动的Cloud Shell。
一旦打开Cloud Shell(bash)控制台后,您只需输入以下命令即可执行kubectl。
$ az aks get-credentials --resource-group <Resource Group Name> --name <AKS Name>
Merged "<AKS Name>" as current context in /home/yoshimasa_katakura/.kube/config
AKS 上部署各种服务
创建秘密
在MySQL部署时,可以使用Kubernetes的密钥来创建指定的管理员密码。这样可以避免将密码直接写在yaml文件中。
$ kubectl apply secret generic wp-secrets --from-literal=WORDPRESS_DB_PASSWORD=<PASSWORD>
创建MySQL的ExternalName
MySQLのエンドポイント名も環境依存になるため、WordPress本体のyamlファイルに記載はせずに、ExternalNameとして最初に作成します。
准备以下的yaml文件。
将externalName设置为先前创建的MySQL服务器的名称。
apiVersion: v1
kind: Service
metadata:
name: azure-mysql
spec:
type: ExternalName
externalName: XXX.mysql.database.azure.com (ここは適宜変更)
使用以下命令进行创建。
$ kubectl apply -f mysql-service.yaml
创建用于传递给WordPress的环境变量的配置地图(ConfigMap)。
除了上述密碼之外,還需要準備環境變數來傳遞給WordPress的容器。將這樣的環境相依值放在另一個yaml文件中,可以提高後續的維護性。將WORDPRESS_DB_USER設定為先前創建的MySQL服務器的管理員登錄名。
apiVersion: v1
kind: ConfigMap
metadata:
name: wp-configmap
data:
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: dbadmin@aks-mysql (ここは適宜変更)
WORDPRESS_DB_HOST: azure-mysql:3306
用下面的指令创建。
$ kubectl apply -f wp-configmap.yaml
创建永久化存储
由于我们将使用Azure的Standard Disk作为持久性存储,因此在storage-class中指定为“default”。
我们暂时保留了5Gi的大小,但请根据需要进行适当调整。
由于它将被挂载在/var/www/html目录下,在使用WordPress进行大量媒体文件上传时,可能需要将其调整得更大。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: wp-azure-disk
annotations:
volume.beta.kubernetes.io/storage-class: default
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
使用以下命令创建。
$ kubectl apply -f wp-storage.yaml
创建外部负载均衡器
为了使WordPress能够从互联网访问,我们将创建一个外部负载均衡器。
在yaml文件中,将先前创建的Azure公共IP地址的值设置为相同的IP地址。
apiVersion: v1
kind: Service
metadata:
name: wp-external-lb
spec:
loadBalancerIP: XX.XX.XX.XX (ここは適宜変更)
type: LoadBalancer
ports:
- port: 80
selector:
app: wordpress
用以下命令进行创建。
$ kubectl apply -f wp-lb.yaml
顺便一提,当执行此命令时,将会更改Azure上的负载均衡器资源“kubernetes”的配置,并添加从指定的公共IP地址负载均衡到Kubernetes节点的设置。
建立WordPress网站
完成以下的任务后,接下来将创建WordPress的部署。
シークレット(Secrets)「wp-secrets」
環境変数(ConfigMap)「wp-configmap」
永続化ストレージ(PersistentVolumeClaim)「wp-azure-disk」
MySqlのExternalName「mysql-service」
ロードバランサー(LoadBalancer)「wp-external-lb」
このyamlファイル内には環境に依存した記述が一切ありませんね。
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress
labels:
app: wordpress
spec:
replicas: 1
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
containers:
- name: wordpress
image: wordpress
envFrom:
- configMapRef:
name: wp-configmap
- secretRef:
name: wp-secrets
ports:
- containerPort: 80
name: wordpress
volumeMounts:
- name: wp-azure-disk
mountPath: /var/www/html
volumes:
- name: wp-azure-disk
persistentVolumeClaim:
claimName: wp-azure-disk
以下のコマンドで作成します。
$ kubectl apply -f wp-service.yaml
确认行动
在AKS上确认部署状态。
もっと前のタイミングでも良いのですが、AKS上に作成した各種ワークロードの確認をします。
# シークレットの状態確認
$ kubectl get secrets
NAME TYPE DATA AGE
azure-storage-account-ktkraksst01-secret Opaque 2 4d
default-token-bjsjg kubernetes.io/service-account-token 3 8d
wp-secrets Opaque 1 2h
# 環境変数の状態確認
$ kubectl get configmap
NAME DATA AGE
wp-configmap 3 11h
# 永続化ストレージの状態確認
$ kubectl get persistentVolumeClaim
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
wp-azure-disk Bound pvc-e4f26c86-8c02-11e8-b0bf-da69366a1397 5Gi RWO default 1d
# ExternalNameとLoadbalancer(両方共service)の状態確認
$ kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-mysql ExternalName <none> aks-mysql.mysql.database.azure.com <none> 1d
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 8d
wp-external-lb LoadBalancer 10.0.145.26 XX.XX.XX.XX 80:31367/TCP 25m
# WordPressのPodの状態確認
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
wordpress-5fbc6d9cc8-mhd8h 1/1 Running 0 2h
要查看 WordPress 中 Pod 的详细信息,请输入以下命令。
$ kubectl describe pod wordpress-5fbc6d9cc8-mhd8h
Name: wordpress-5fbc6d9cc8-mhd8h
Namespace: default
Node: aks-agentpool-10122857-1/10.240.0.4
Start Time: Sun, 22 Jul 2018 10:15:26 +0900
Labels: app=wordpress
pod-template-hash=1967285774
Annotations: <none>
Status: Running
IP: XX.XX.XX.XX
Controlled By: ReplicaSet/wordpress-5fbc6d9cc8
Containers:
wordpress:
Container ID: docker://2e39cffc356eba2b9e634d143dd2887df7d2da4255b10835876732b0bd45d30a
Image: wordpress
Image ID: docker-pullable://wordpress@sha256:1958b7258b1e1b09bbec1c6269e2e150bcc85c18383aa2420d95cb95a30d107f
Port: 80/TCP
Host Port: 0/TCP
State: Running
Started: Sun, 22 Jul 2018 10:16:10 +0900
Ready: True
Restart Count: 0
Environment Variables from:
wp-configmap ConfigMap Optional: false
wp-secrets Secret Optional: false
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-bjsjg (ro)
/var/www/html from wp-azure-disk (rw)
Conditions:
Type Status
Initialized True
Ready True
PodScheduled True
Volumes:
wp-azure-disk:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: wp-azure-disk
ReadOnly: false
default-token-bjsjg:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-bjsjg
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events: <none>
ConditionsのReadyが「True」になっているので準備完了です。
实际上连接到WordPress网站
可以通过直接在浏览器中输入之前创建的公共IP地址,或者通过输入指定的FQDN(全限定域名)”XXX.japanease.cloudapp.azure.com”来连接WordPress网站。
最后
今回の記事ではKubernetesそのもののベストプラクティスについての話ではなく、Azure Kubernetes Service(AKS)の概要を中心に記載しました。
Azure Kubernetes Serviceを利用していく上でAzureの関連サービスをうまく連携して活用していく上で参考になればと思います。
最后,我已经将这次使用的所有yaml文件上传到GitHub,请随意使用。
https://github.com/katakura/aks-wordpress 这个链接是一个用于AKS的WordPress项目的GitHub仓库。



AKS部署的准备工作
在控制Kubernetes时,基本上会使用”kubectl”命令。由于在客户端个人电脑上安装此命令通常需要额外步骤,所以本次我们将使用可以从Azure门户启动的Cloud Shell。

一旦打开Cloud Shell(bash)控制台后,您只需输入以下命令即可执行kubectl。
$ az aks get-credentials --resource-group <Resource Group Name> --name <AKS Name>
Merged "<AKS Name>" as current context in /home/yoshimasa_katakura/.kube/config
AKS 上部署各种服务
创建秘密
在MySQL部署时,可以使用Kubernetes的密钥来创建指定的管理员密码。这样可以避免将密码直接写在yaml文件中。
$ kubectl apply secret generic wp-secrets --from-literal=WORDPRESS_DB_PASSWORD=<PASSWORD>
创建MySQL的ExternalName
MySQLのエンドポイント名も環境依存になるため、WordPress本体のyamlファイルに記載はせずに、ExternalNameとして最初に作成します。
准备以下的yaml文件。
将externalName设置为先前创建的MySQL服务器的名称。
apiVersion: v1
kind: Service
metadata:
name: azure-mysql
spec:
type: ExternalName
externalName: XXX.mysql.database.azure.com (ここは適宜変更)
使用以下命令进行创建。
$ kubectl apply -f mysql-service.yaml
创建用于传递给WordPress的环境变量的配置地图(ConfigMap)。
除了上述密碼之外,還需要準備環境變數來傳遞給WordPress的容器。將這樣的環境相依值放在另一個yaml文件中,可以提高後續的維護性。將WORDPRESS_DB_USER設定為先前創建的MySQL服務器的管理員登錄名。
apiVersion: v1
kind: ConfigMap
metadata:
name: wp-configmap
data:
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: dbadmin@aks-mysql (ここは適宜変更)
WORDPRESS_DB_HOST: azure-mysql:3306
用下面的指令创建。
$ kubectl apply -f wp-configmap.yaml
创建永久化存储
由于我们将使用Azure的Standard Disk作为持久性存储,因此在storage-class中指定为“default”。
我们暂时保留了5Gi的大小,但请根据需要进行适当调整。
由于它将被挂载在/var/www/html目录下,在使用WordPress进行大量媒体文件上传时,可能需要将其调整得更大。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: wp-azure-disk
annotations:
volume.beta.kubernetes.io/storage-class: default
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
使用以下命令创建。
$ kubectl apply -f wp-storage.yaml
创建外部负载均衡器
为了使WordPress能够从互联网访问,我们将创建一个外部负载均衡器。
在yaml文件中,将先前创建的Azure公共IP地址的值设置为相同的IP地址。
apiVersion: v1
kind: Service
metadata:
name: wp-external-lb
spec:
loadBalancerIP: XX.XX.XX.XX (ここは適宜変更)
type: LoadBalancer
ports:
- port: 80
selector:
app: wordpress
用以下命令进行创建。
$ kubectl apply -f wp-lb.yaml
顺便一提,当执行此命令时,将会更改Azure上的负载均衡器资源“kubernetes”的配置,并添加从指定的公共IP地址负载均衡到Kubernetes节点的设置。
建立WordPress网站
完成以下的任务后,接下来将创建WordPress的部署。
-
シークレット(Secrets)「wp-secrets」
環境変数(ConfigMap)「wp-configmap」
永続化ストレージ(PersistentVolumeClaim)「wp-azure-disk」
MySqlのExternalName「mysql-service」
ロードバランサー(LoadBalancer)「wp-external-lb」
このyamlファイル内には環境に依存した記述が一切ありませんね。
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress
labels:
app: wordpress
spec:
replicas: 1
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
containers:
- name: wordpress
image: wordpress
envFrom:
- configMapRef:
name: wp-configmap
- secretRef:
name: wp-secrets
ports:
- containerPort: 80
name: wordpress
volumeMounts:
- name: wp-azure-disk
mountPath: /var/www/html
volumes:
- name: wp-azure-disk
persistentVolumeClaim:
claimName: wp-azure-disk
以下のコマンドで作成します。
$ kubectl apply -f wp-service.yaml
确认行动
在AKS上确认部署状态。
もっと前のタイミングでも良いのですが、AKS上に作成した各種ワークロードの確認をします。
# シークレットの状態確認
$ kubectl get secrets
NAME TYPE DATA AGE
azure-storage-account-ktkraksst01-secret Opaque 2 4d
default-token-bjsjg kubernetes.io/service-account-token 3 8d
wp-secrets Opaque 1 2h
# 環境変数の状態確認
$ kubectl get configmap
NAME DATA AGE
wp-configmap 3 11h
# 永続化ストレージの状態確認
$ kubectl get persistentVolumeClaim
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
wp-azure-disk Bound pvc-e4f26c86-8c02-11e8-b0bf-da69366a1397 5Gi RWO default 1d
# ExternalNameとLoadbalancer(両方共service)の状態確認
$ kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-mysql ExternalName <none> aks-mysql.mysql.database.azure.com <none> 1d
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 8d
wp-external-lb LoadBalancer 10.0.145.26 XX.XX.XX.XX 80:31367/TCP 25m
# WordPressのPodの状態確認
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
wordpress-5fbc6d9cc8-mhd8h 1/1 Running 0 2h
要查看 WordPress 中 Pod 的详细信息,请输入以下命令。
$ kubectl describe pod wordpress-5fbc6d9cc8-mhd8h
Name: wordpress-5fbc6d9cc8-mhd8h
Namespace: default
Node: aks-agentpool-10122857-1/10.240.0.4
Start Time: Sun, 22 Jul 2018 10:15:26 +0900
Labels: app=wordpress
pod-template-hash=1967285774
Annotations: <none>
Status: Running
IP: XX.XX.XX.XX
Controlled By: ReplicaSet/wordpress-5fbc6d9cc8
Containers:
wordpress:
Container ID: docker://2e39cffc356eba2b9e634d143dd2887df7d2da4255b10835876732b0bd45d30a
Image: wordpress
Image ID: docker-pullable://wordpress@sha256:1958b7258b1e1b09bbec1c6269e2e150bcc85c18383aa2420d95cb95a30d107f
Port: 80/TCP
Host Port: 0/TCP
State: Running
Started: Sun, 22 Jul 2018 10:16:10 +0900
Ready: True
Restart Count: 0
Environment Variables from:
wp-configmap ConfigMap Optional: false
wp-secrets Secret Optional: false
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-bjsjg (ro)
/var/www/html from wp-azure-disk (rw)
Conditions:
Type Status
Initialized True
Ready True
PodScheduled True
Volumes:
wp-azure-disk:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: wp-azure-disk
ReadOnly: false
default-token-bjsjg:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-bjsjg
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events: <none>
ConditionsのReadyが「True」になっているので準備完了です。
实际上连接到WordPress网站
可以通过直接在浏览器中输入之前创建的公共IP地址,或者通过输入指定的FQDN(全限定域名)”XXX.japanease.cloudapp.azure.com”来连接WordPress网站。




最后
今回の記事ではKubernetesそのもののベストプラクティスについての話ではなく、Azure Kubernetes Service(AKS)の概要を中心に記載しました。
Azure Kubernetes Serviceを利用していく上でAzureの関連サービスをうまく連携して活用していく上で参考になればと思います。
最后,我已经将这次使用的所有yaml文件上传到GitHub,请随意使用。
https://github.com/katakura/aks-wordpress 这个链接是一个用于AKS的WordPress项目的GitHub仓库。