Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

kubernetes on Azure 最新情報

326 views

Published on

Global Azure Boot Camp 2018 Tokyo のLT資料。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

kubernetes on Azure 最新情報

  1. 1. kubernetes on Azure 最新情報 Global Azure Boot Camp 2018 Tokyo Lightning Talk 田中 孝佳 @tanaka_733
  2. 2. 自己紹介 @tanaka_733 ◦ Software Maintenance Engineer @ Red Hat ◦ OpenShift (on Azure) ◦ .NET Core on RHEL/OpenShift ◦ SQL Server on RHEL etc… ◦ Microsoft MVP ◦ C# とか Visual Studio拡張とか ◦ 最近はQ#とかトポロジカル量子コンピューターもやってます
  3. 3. 今日のテーマ kubernetes on Azure の最新機能ご紹介 ◦AKSではなく、あくまでkubernetes本体の機能 ◦kubernetesをAzureに自前展開すれば使える オープンな機能の部分が対象 ◦kubernetes 1.9.zあたりの更新を中心に
  4. 4. APIの認証にMSIが利用可能に kubernetesからAzureのリソースを制御するのに認証が必要 ◦ 永続化ディスク用のAzure Diskの脱着 ◦ ServiceとしてのLoadBalancerの管理 ◦ etc 従来はAzure AD Appを作成してIDとパスワードを平文で格納 していた ➔ Managed Service Identity (MSI) でパスワードレスに https://github.com/kubernetes/kubernetes/pull/48854
  5. 5. APIの認証にMSIが利用可能に tenantId: xxx-xxx subscriptionId: xxx-xxx resourceGroup: k8sgroup location: centralus useManagedIdentityExtension: true SecurityGroupName: k8s-nsg tenantId: xxx-xxx subscriptionId: xxx-xxx aadClientId: xxx-xxx aadClientSecret: xxx-xxx resourceGroup: k8sgroup location: centralus SecurityGroupName: k8s-nsg
  6. 6. Use Instance Metadata 自分自身の情報を取得するのにREST APIを利用していた ◦ なお、kubernetesのノード名=AzureのVM名という前提がある その代わりにInstance Metadataを利用できるように https://github.com/kubernetes/kubernetes/pull/48243 https://github.com/kubernetes/kubernetes/pull/49237 Instance Metadataを利用することでAPI呼び出しの削減 ◦ また、API呼び出しが5xxエラーになることなどもあり、 随時リトライ処理の改善などが行われている
  7. 7. Use Instance Metadata tenantId: xxx-xxx subscriptionId: xxx-xxx resourceGroup: k8sgroup location: centralus useManagedIdentityExtension: true useInstanceMetadata: true SecurityGroupName: k8s-nsg
  8. 8. Azure Fileまわりの改善 Azure Fileを永続化ディスクとしてマウントする機能 マウント時のデフォルトパーミッションが0755に https://github.com/kubernetes/kubernetes/pull/56551 マウントオプションをPersistent VolumeもしくはStorage Classで指定可能に https://github.com/kubernetes/kubernetes/pull/54674 storage account keyを格納するsecretの名前空間を指定可能に https://github.com/kubernetes/kubernetes/pull/47660
  9. 9. Azure FileのMount Option kind: StorageClass metadata: name: azurefile provisioner: kubernetes.io/azure-file mountOptions: - dir_mode=0777 - file_mode=0777 parameters: storageAccount: k8sstr location: centralus kind: "PersistentVolume" metadata: name: "pvfile02" spec: capacity: storage: "5Gi" accessModes: - "ReadWriteMany" azureFile: secretNamespace: common secretName: azurefile-secret shareName: pvshare readOnly: false mountOptions: - dir_mode=0777 - file_mode=0777
  10. 10. Azure Load Balancerに public DNSを設定可能に kind=LoadBalancerなサービスでALBをプロビジョンできる public IPに設定するDNSラベルをannotationで指定できるようになった ◦ https://github.com/kubernetes/kubernetes/pull/47849 kind: Service apiVersion: v1 metadata: name: hello annotations: service.beta.kubernetes.io/azure-dns-label-name: myservice spec: type: LoadBalancer selector: app: hello tier: backend ports: - protocol: TCP
  11. 11. 可用性セットごとに ALBを構成できるようになった デフォルトだと一つのALBで複数のサービスを公開する=複数のfontend IPを構成 複数の可用性セットがある場合、可用性セットごとにALBを構成できるように ➔ なぜかドキュメントが一切なく、ソースコード見ないと分からない... kind: Service apiVersion: v1 metadata: name: hello annotations: service.beta.kubernetes.io/azure-load-balancer-mode: as1,as2 spec: type: LoadBalancer selector: app: hello tier: backend ports:
  12. 12. Internal Load Balancerで subnetsを指定可能に kind=LoadBalancerでさらにInternal Load Balancerを指定した場合、 frontendのIPアドレスをデフォルト以外のsubnetから指定できるようになった ◦ https://github.com/kubernetes/kubernetes/pull/51757 kind: Service apiVersion: v1 metadata: name: hello-int-a annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" service.beta.kubernetes.io/azure-load-balancer-internal-subnet: "additional-subnet" spec: type: LoadBalancer selector: app: hello tier: backend ports: - protocol: TCP
  13. 13. Azure Regional Cloud や Azure Stackで動く? k8s本体はAzureに依存していないので当然うごく Azure Cloud Providerについて Azure Regional Cloud: Azure File以外はk8s 1.6くらいから動くはず。 Azure Fileは最近のFixで動くはず。 Azure Stack: APIエンドポイントを変更できないので(コード修正なしでは)動かないはず
  14. 14. Windows Server サポートは? 絶賛開発進行中なので、興味のある人はこちらから。 https://kubernetes.io/docs/getting-started-guides/windows/ https://docs.microsoft.com/ja- jp/virtualization/windowscontainers/kubernetes/getting-started-kubernetes- windows Azure Cloud Providerとは別のSIGで動いているけど、 Windows Server & Azure Cloud Providerな機能も当然ある。 いまのところ、Nodeとしてのサポートのみ。
  15. 15. k8s 1.10での追加 VMSSのサポート https://github.com/kubernetes/features/issues/513 Azure FileでfsGroupの追加 https://github.com/kubernetes/kubernetes/pull/58316 PrometheusでAzureAPI呼び出しの監視をサポート https://github.com/kubernetes/kubernetes/pull/58204 Azure Diskでのマウントオプションのサポート https://github.com/kubernetes/kubernetes/pull/56147
  16. 16. おまけ
  17. 17. 機能追加はどこでチェックする? Release Notesをバージョンごとにチェックしましょう https://github.com/kubernetes/kubernetes/blob/master/CHANG ELOG-1.9.md https://github.com/kubernetes/kubernetes/blob/master/CHANG ELOG-1.10.md リンクされているissueにタグがついてるけど不正確なので 最終的にはコミット履歴を確認 複数のマイナーバージョンにコミットされる場合もある
  18. 18. ドキュメントは…? 本家のドキュメントがあるけど、わりと足りていない。 前提条件が抜けていることがあるので その場合は地道にソースコードを見て調べましょう OpenShift をご購入いただけるとk8s on Azureの部分もサ ポート ◦ 適宜本家のドキュメントにPRを出して改善しています

×