LoginSignup
2
2

More than 1 year has passed since last update.

しくみがわかるkubernetes~Azureで動かしながら学ぶコンセプトと実践知識~ハンズオンやってみた【前半】

Last updated at Posted at 2022-01-19

はじめに

こんにちは@sk_130と申します。

本記事は、タイトルに記載しました書籍にハンズオンが載っているのですが、そちらを実際に動かしてみてはまったところとか、ちゃんとうまくできるか、作業履歴を残したくて記事にしました。

書籍は全12章ですが、各章の単位で倣ってまとめていきます。この記事は3章までまとめていきます

以下の本です
kubernetes, AKSを学ぶ上では良書だと思っています。

AKSはAzureのkubernetesのマネージドサービスですが、この本はAzure使いの人じゃなくても役に立ちます
kubernetesがよくわからん、、って人も手を動かしながら学べるところがいいですね。

一応レビューです。よくわからん、おいて行かれる。。って人もいるみたいです。

一応、、kubernetesとは

ビギナーの人向け
今さら人に聞けない Kubernetes とは?

詳しく知りたい人向け
数時間で完全理解!わりとゴツいKubernetesハンズオン!!

1章:コンテナーとkubernetes

ここには上記の概念的なことがまとめられています。

この章でコンテナやkubernetesとはが学べますし、どういったときに役立つのかとかとかが書かれています。

2章:Kubernetesの環境構築

ここでは開発環境の準備やk8sの構築方法が書かれています

VSCodeなど、開発環境の準備のこともまとめられています。
この手順を元にPCセッティングすれば、自分のPCの開発環境が整います。

VSCodeにdockerやkubernetesの拡張機能を入れたりとかが書かれています。

ハンズオンはAzure上にVMサーバを立てて、そこにSSHして実行することにしました
後々権限やらなんやらが大変かなと思ってそうしました

ハンズオンの内容をまるまる書くのはダメそうなので、内容がばれない程度に記載します

まずリソースグループやACRを手順に則ってデプロイします。

その後指定されたgithubがあるので、そこからダウンロードします。これもテキスト通りに実行。
そこにDockerfileなどが入っており、これを作ったACRにイメージビルドします。

こんな感じでイメージビルドします。

az acr build --registry $ACR_NAME --image photo-view:v2.0 v2.0/

うまくいくとこんな感じになります。これもテキスト通り

$ az acr repository show-tags -n $ACR_NAME --repository photo-view
[
  "v1.0",
  "v2.0"
]

チュートリアルもありますので、それをやるとgithubへプッシュしたときにイメージビルドの自動化できるみたい
今回はやらないです
https://docs.microsoft.com/ja-jp/azure/container-registry/container-registry-tutorial-build-task

ACRとAKSの連携をやります

ざっくり書くと、ACRとAKS間の認証のため、サービスプリンシパルを使います。
書籍の通りに実行しき、ここまで設定できて、クラスターを作成します

書籍が古く、k8sのバージョンが古いですが、バージョン指定しないと推奨になるので
--kubernetes-version hogehoge を消せばいいかなと思います

公式だと以下になるかなと
https://docs.microsoft.com/ja-jp/azure/container-registry/container-registry-auth-service-principal

参考実行例を公式をもとに記載します
以下の実行でもクラスタが建てられると思います。10分ぐらい待ちます

$ echo $ACR_NAME
sampleACRRegistry3(ここは任意)
$ SERVICE_PRINCIPAL_NAME=acr-service-principal
$(az acr show --name $ACR_NAME --query "id" --output tsv)
$(az ad sp create-for-rbac --name $SERVICE_PRINCIPAL_NAME --scopes $ACR_REGISTRY_ID --role acrpull --query "password" --output tsv)
WARNING: いろいろでます

$ USER_NAME=$(az ad sp list --display-name $SERVICE_PRINCIPAL_NAME --query "[].appId" --output tsv)
$ echo "Service principal ID: $USER_NAME"
Service principal ID: IDが表示
$ echo "Service principal password: $PASSWORD"
Service principal password: IDが表示
azureuser@test-aks:~/Understanding-K8s/chap02$ az aks create --name $AKS_CLUSTER_NAME --reso
urce-group $AKS_RES_GROUP  --generate-ssh-keys --service-principal $USER_NAME --client-secre
t $PASSWORD
 / Running ..

その後、認証情報を取得します。.kubeディレクトリに認証情報を書き込みます

書籍だとadminのところ誤記になっていたので、そこは注意です

$ az aks get-credentials --admin --resource-group $AKS_RES_GROUP --name $AKS_CLUSTER_NAME
Merged "AKSCluster-admin" as current context in /home/azureuser/.kube/config

その後はkubectlのコマンドの例があります。
ここで結構学習できます。この時点での実行例は以下です。
Nodeしか建てていないので、以下のようになります

$ kubectl get pod
No resources found in default namespace.
$ kubectl get nodes
NAME                                STATUS   ROLES   AGE     VERSION
aks-nodepool1-41065612-vmss000000   Ready    agent   5m49s   v1.21.7
aks-nodepool1-41065612-vmss000001   Ready    agent   5m44s   v1.21.7
aks-nodepool1-41065612-vmss000002   Ready    agent   5m47s   v1.21.7

3章:Kubernetesを動かしてみよう

ここではアプリケーションのデプロイやマニフェストファイルの作成のことが書かれています

チュートリアルから自分の作ったACRのレジストリ名に変更する必要があり
今回VMサーバから実行しているので、vimで修正して実行しました

アプリのデプロイ

うまくいくとpodが起動します
今回PodはよしなにNodeに配置されます

$ vim tutorial-deployment.yaml
コード修正
$ kubectl apply -f tutorial-deployment.yaml 
deployment.apps/photoview-deployment created
$ kubectl get pod -o wide
NAME                                    READY   STATUS    RESTARTS   AGE     IP           NODE                                NOMINATED NODE   READINESS GATES
photoview-deployment-7676d55c57-2w95g   1/1     Running   0          2m58s   10.244.2.4   aks-nodepool1-41065612-vmss000001   <none>           <none>
photoview-deployment-7676d55c57-d45pf   1/1     Running   0          2m58s   10.244.0.5   aks-nodepool1-41065612-vmss000000   <none>           <none>
photoview-deployment-7676d55c57-fftq4   1/1     Running   0          2m58s   10.244.0.6   aks-nodepool1-41065612-vmss000000   <none>           <none>
photoview-deployment-7676d55c57-tfb95   1/1     Running   0          2m58s   10.244.1.3   aks-nodepool1-41065612-vmss000002   <none>           <none>
photoview-deployment-7676d55c57-zzrb4   1/1     Running   0          2m58s   10.244.2.3   aks-nodepool1-41065612-vmss000001   <none>           <none>
続いてサービスを公開します

サービスをapplyすることで、サービスが用意されます
以下のEXTERNAL-IPhogehogeのところになります。
このIPを打ち込むと画像が表示されます

azureuser@test-aks:~/Understanding-K8s/chap03$ kubectl apply -f tutorial-service.yaml 
service/webserver created
azureuser@test-aks:~/Understanding-K8s/chap03$ kubectl get svc
NAME         TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP      hogehoge     <none>         443/TCP        29m
webserver    LoadBalancer   hogehoge     hogehoge   80:32062/TCP       31s

こんな感じ、ネタバレはNGなので、ぜひハンズオンをやってみて、どんな画像が出るか見てみてください
k8s.PNG

おまけ この本をもとにEKSで動かしている人もいるみたい

「しくみがわかるKubernetes」をEKSで学ぶ

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2