Slide 1

Slide 1 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 1/33 Recap of de:code 2019

Slide 2

Slide 2 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 2/33 Kyohei Mizumoto(@kyohmizu) C# Software Engineer Interests Docker/Kubernetes Go Security whoami

Slide 3

Slide 3 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 3/33 de:code 2019 https://www.microsoft.com/ja-jp/events/decode/2019/default.aspx The technical conference for all IT engineers hosted by Microsoft Held on 29th, 30th May

Slide 4

Slide 4 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 4/33 de:code 2019 Most of sessions are about Microsoft Azure Lots of sessions about AKS The number of introduction examples is increasing Their ervices(cloud services especially) are getting sophisticated More simple, more functional

Slide 5

Slide 5 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 5/33 What I was interested in Windows Containers Virtual Kubelet Kubernetes-based Event-driven Autoscaling(KEDA) NetApp Services

Slide 6

Slide 6 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 6/33 Windows Containers

Slide 7

Slide 7 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 7/33 Windows Containers on k8s https://cloudblogs.microsoft.com/opensource/2019/03/25/windows- server-containers-now-supported-kubernetes/ Single Kubernetes cluster can have both Linux nodes and Windows Server nodes

Slide 8

Slide 8 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 8/33 Windows Containers on AKS https://docs.microsoft.com/en-us/azure/aks/windows-container-cli Preview feature Multiple nood pools You need to: Install aks-preview CLI extension Add a Windows Server node pool

Slide 9

Slide 9 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 9/33 Virtual Kubelet

Slide 10

Slide 10 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 10/33 Virtual Kubelet https://github.com/Virtual-Kubelet/Virtual-Kubelet "Kubernetes API on top, programmable back." Allows the nodes to be backed by other services (ACI, AWS Fargate, IoT Edge etc) Enable the extension of the k8s API into serverless container platforms Denoted to CNCF from Microsoft

Slide 11

Slide 11 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 11/33 How It Works

Slide 12

Slide 12 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 12/33 Providers Alibaba Cloud ECI Provider Azure Container Instances Provider AWS Fargate Provider HashiCorp Nomad Provider OpenStack Zun Provider (Adding a New Provider via the Provider Interface)

Slide 13

Slide 13 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 13/33 Virtual Nodes on Azure Portal

Slide 14

Slide 14 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 14/33 Virtual Nodes on Azure Portal ACI is added in AKS $ kubectl get node NAME STATUS ROLES AGE -- aks-agentpool-20139558-0 Ready agent 19m aks-agentpool-20139558-1 Ready agent 19m virtual-node-aci-linux Ready agent 17m

Slide 15

Slide 15 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 15/33 KEDA

Slide 16

Slide 16 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 16/33 https://github.com/kedacore/keda Kubernetes-based Event-driven Autoscaling 0-1 autoscaling Run on both the Cloud and the Edge

Slide 17

Slide 17 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 17/33 How It Works

Slide 18

Slide 18 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 18/33 How It Works KEDA acts as: an agent to activate and deactivate a deployment to scale to/from zero on no events a Kubernetes metrics server to expose rich event data to the HPA to drive scale out

Slide 19

Slide 19 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 19/33 NetApp Services

Slide 20

Slide 20 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 20/33 Azure NetApp Files https://cloud.netapp.com/azure-netapp-files/ https://docs.microsoft.com/en-us/azure/azure-netapp-files/

Slide 21

Slide 21 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 21/33 NetApp Kubernetes Service https://cloud.netapp.com/kubernetes-service

Slide 22

Slide 22 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 22/33 Demo

Slide 23

Slide 23 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 23/33 Vertual Kubelet with AKS https://docs.microsoft.com/en-us/azure/aks/virtual-kubelet Install vertual kubelet(Windows + Linux) Deploy Pods on vertual kubelet nodes

Slide 24

Slide 24 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 24/33 Before You Begin Register Container Instances feature provider Initialize Helm Service account for RBAC-enabled clusters $ helm init --service-account tiller

Slide 25

Slide 25 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 25/33 Install $az aks install-connector \ --resource-group myResourceGroup \ --name myAKSCluster \ --connector-name virtual-kubelet \ --os-type Both

Slide 26

Slide 26 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 26/33 Validate Vertual Kubelet 1 node + 2 virtual kubelet nodes $ kubectl get node NAME STATUS -- aks-agentpool-20139558-0 Ready virtual-kubelet-virtual-kubelet-linux-japaneast Ready virtual-kubelet-virtual-kubelet-windows-japaneast Ready

Slide 27

Slide 27 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 27/33 Deploy on Vertual Kubelet Pods for virtual kubelet are deployed on the normal node $ kubectl get po -o wide NAME READY STATUS RESTARTS AGE IP NODE -- pod/virtual-kubelet-linux-japaneast-virtual-kubelet-for-aks-87rd2m5 1/1 Running 0 17m 10.244.0.14 aks-agentpool-20139558-0 pod/virtual-kubelet-windows-japaneast-virtual-kubelet-for-aks-9fzw5 1/1 Running 0 17m 10.244.0.15 aks-agentpool-20139558-0

Slide 28

Slide 28 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 28/33 Run Linux Container apiVersion: apps/v1 kind: Deployment metadata: name: aci-helloworld spec: replicas: 1 selector: matchLabels: app: aci-helloworld template: metadata: labels: app: aci-helloworld spec: containers: - name: aci-helloworld image: microsoft/aci-helloworld ports: - containerPort: 80 nodeSelector: beta.kubernetes.io/os: linux kubernetes.io/role: agent type: virtual-kubelet tolerations: - key: virtual-kubelet.io/provider operator: Equal value: azure effect: NoSchedule

Slide 29

Slide 29 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 29/33 Run Linux Container The pod is running on the linux virtual kubelet node $ kubectl apply -f vk-linux.yaml deployment.apps/aci-helloworld created $ kubectl get po -o wide NAME READY STATUS RESTARTS AGE IP NODE -- aci-helloworld-657c97d89b-7lnpm 1/1 Running 0 65s 40.81.220.187 virtual-kubelet-virtual-kubelet-linux-japaneast

Slide 30

Slide 30 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 30/33 Run Windows Container apiVersion: apps/v1 kind: Deployment metadata: name: nanoserver-iis spec: replicas: 1 selector: matchLabels: app: nanoserver-iis template: metadata: labels: app: nanoserver-iis spec: containers: - name: nanoserver-iis image: microsoft/iis:nanoserver ports: - containerPort: 80 nodeSelector: beta.kubernetes.io/os: windows kubernetes.io/role: agent type: virtual-kubelet tolerations: - key: virtual-kubelet.io/provider operator: Equal value: azure effect: NoSchedule

Slide 31

Slide 31 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 31/33 Run Windows Container The pod is running on the windows virtual kubelet node $ kubectl apply -f vk-windows.yaml deployment.apps/nanoserver-iis created $ kubectl get po -o wide NAME READY STATUS RESTARTS AGE IP NODE -- nanoserver-iis-6465dc649f-v7q2x 1/1 Running 0 53s 20.43.88.185 virtual-kubelet-virtual-kubelet-windows-japaneast

Slide 32

Slide 32 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 32/33 Access to the Pods Pods on vertual kubelet nodes have public IP address No need to create service resources

Slide 33

Slide 33 text

2019/6/6 Recap of de:code 2019 127.0.0.1:5500/#1 33/33 Thank you!