7. Market trend of Kubernetes
Azure Kubernetes Service (AKS) GA
– New regions, more features, increased productivity
by Microsoft Azure Blog 2018.6.13
• 「Microsoft Build 2018」にて「Azure Container
Service」から「Azure Kubernetes Service」と改名
• オーストラリア東部、英国南部、米国西部、米国西部
2、北ヨーロッパの各リージョンで利用可能。今後数
カ月以内に10のリージョンでの追加展開が予定
8. Market trend of Kubernetes
Kubernetes on Windows ServerをDocker EEでサポート。Linuxと
Windows Serverのコンテナオーケストレーションを統一的に管理。
DockerCon 2018 by Publickey 2018.6.14
• Docker EEでWindows Server版
Kubernetesでサポート
9. Market trend of Kubernetes
VMwareもKubernetesのマネージドサービス「VMware Kubernetes
Engine」提供へ。VMware Cloud on AWSを皮切りにAzure版も予定
by Publickey 2018.6.28
• VMware CloudのサービスとしてKubernetesのマネー
ジドサービス「VMware Kubernetes Engine」(VKE)
を提供
• Kubernetesの複雑さを抽象化した「SmartCluster」を
提供
• VMwareもKubernetesをマルチクラウド戦略の軸に
10. Market trend of Kubernetes
GitHub Goes All in on Kubernetes
by THENEWSTACK 2017.8.16
SRE(Site Reliability Engineering)の事例としても興味深い!!
11. Market trend of Kubernetes
昨年、Distribution,PaaS,Managed,Installation/Operationsというカ
テゴリに分けて、Kubernetesに関係するサービスやツールを調べてみ
ました。
https://qiita.com/cyberblack28/items/e4836b4ff06156f69588
※1年以上前の情報です。
Investigating of Kubernetes Platform
16. Kubernetes Architecture
API
UI
CLI
API Server Scheduler Controller-Manager
etcd
Master
コンポーネント 概要
API Server kubernetesのAPIです。利用者との通信、REST,CRUD,認証認可を行います。
Scheduler PodをどのNodeへデプロイするかスケジューリングします。
Controller-Manager クラスタを制御するコンポーネントで、Nodeの稼働状況監視、コンテナーのレプ
リケーション等、リソース定義を具現化します。
etcd クラスタの全情報を格納するデータストアです。他のコンポーネントはAPI Server
を経由して、etcdに保存された情報を監視して、更新があると直ちに通知される仕
組みになっています。
21. Kubernetes Architecture
Service
Client
Node
Service
Pod
Pod
Pod
機能 概要
ClusterIP クラスタ内でPod同士が通信するためのプライベートIPアドレス
ExternalIP 指定したNodeのIP:Portで受けたトラフィックをコンテナーに転送して、外部通信
NodePort 全NodeにおいてIP:Portで受けたトラフィックをコンテナーに転送して、外部通信
LoadBalancer LB経由でアクセス可能なService、L4ロードバランサ機能
endpoint
Pod Pod
Node
Node
LoadBalancer
Serviceはクラスター内外からのリクエストをPodにアクセスする為のルーティン
グやDNS機能を提供するオブジェクトです。
22. Kubernetes Architecture
Ingress
Ingressは、外部 HTTP(S) トラフィックを内部Serviceにルーティングするための
ルールと設定の集合をカプセル化するKubernetesリソースです。
Serviceがレイヤ4(TCP/UDP over IP)、Ingressがレイヤ7(HTTP(S))になります。
Service
Pod
Internet
Pod Pod
Ingress
endpoint
31. Get started with Rancher 2.0
OS Hardware Software
Ubuntu 16.04 (64-bit) Memory: 4GB • 1.12.6
• 1.13.1
• 17.03.2Red Hat Enterprise Linux
7.5 (64-bit)
RancherOS 1.3.0 (64-bit)
Step 1: Prepare a Linux Host
Step 2: Start the server
$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
Web Access!! https://<server_ip>
53. Kubernetes & Rancher Handson
3.「kubectl get nodes」の実行
> kubectl get nodes
NAME STATUS ROLES AGE VERSION
rancher-host Ready controlplane,etcd,worker 39m v1.10.5
> kubectl version
Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.8",
GitCommit:"c138b85178156011dc934c2c9f4837476876fb07", GitTreeState:"clean",
BuildDate:"2018-05-21T19:01:12Z", GoVersion:"go1.9.3", Compiler:"gc",
Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.5",
GitCommit:"32ac1c9073b132b8ba18aa830f46b77dcceb0723", GitTreeState:"clean",
BuildDate:"2018-06-21T11:34:22Z", GoVersion:"go1.9.3", Compiler:"gc",
Platform:"linux/amd64"}
4.「kubectl version」の実行
54. Kubernetes & Rancher Handson
5.Guestbookアプリケーションのデプロイ
以下Guestbookアプリケーションのyamlファイルを利用して、デプロイします。
「https://raw.githubusercontent.com/kubernetes/examples/master/guestbook/all-in-
one/guestbook-all-in-one.yaml」
1.Guestbookアプリケーションのデプロイ
> kubectl apply -f
https://raw.githubusercontent.com/kubernetes/examples/master/guestbook/all-in-
one/guestbook-all-in-one.yaml
service "redis-master" created
deployment "redis-master" created
service "redis-slave" created
deployment "redis-slave" created
service "frontend" created
deployment "frontend" created
60. Kubernetes & Rancher Handson
付録1:guestbook-all-in-one.yaml
apiVersion: v1
kind: Service
metadata:
name: redis-master
labels:
app: redis
tier: backend
role: master
spec:
ports:
- port: 6379
targetPort: 6379
selector:
app: redis
tier: backend
role: master
---
apiVersion: apps/v1 # for k8s versions before 1.9.0 use apps/v1beta2 and before 1.8.0
use extensions/v1beta1
kind: Deployment
metadata:
name: redis-master
spec:
selector:
matchLabels:
app: redis
role: master
tier: backend
replicas: 1
template:
metadata:
labels:
app: redis
role: master
tier: backend
spec:
containers:
- name: master
image: k8s.gcr.io/redis:e2e # or just image: redis
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 6379
---
redis-master
61. Kubernetes & Rancher Handson
付録1:guestbook-all-in-one.yaml
apiVersion: v1
kind: Service
metadata:
name: redis-slave
labels:
app: redis
tier: backend
role: slave
spec:
ports:
- port: 6379
selector:
app: redis
tier: backend
role: slave
---
apiVersion: apps/v1 # for k8s versions before 1.9.0 use apps/v1beta2 and before 1.8.0 use
extensions/v1beta1
kind: Deployment
metadata:
name: redis-slave
spec:
selector:
matchLabels:
app: redis
role: slave
tier: backend
replicas: 2
template:
metadata:
labels:
app: redis
role: slave
tier: backend
spec:
containers:
- name: slave
image: gcr.io/google_samples/gb-redisslave:v1
resources:
requests:
cpu: 100m
memory: 100Mi
env:
- name: GET_HOSTS_FROM
value: dns
# If your cluster config does not include a dns service, then to
# instead access an environment variable to find the master
# service's host, comment out the 'value: dns' line above, and
# uncomment the line below:
# value: env
ports:
- containerPort: 6379
---
redis-slave
62. Kubernetes & Rancher Handson
付録1:guestbook-all-in-one.yaml
apiVersion: v1
kind: Service
metadata:
name: frontend
labels:
app: guestbook
tier: frontend
spec:
# if your cluster supports it, uncomment the following to automatically create
# an external load-balanced IP for the frontend service.
# type: LoadBalancer
ports:
- port: 80
selector:
app: guestbook
tier: frontend
---
apiVersion: apps/v1 # for k8s versions before 1.9.0 use apps/v1beta2 and before 1.8.0
use extensions/v1beta1
kind: Deployment
metadata:
name: frontend
spec:
selector:
matchLabels:
app: guestbook
tier: frontend
replicas: 3
template:
metadata:
labels:
app: guestbook
tier: frontend
spec:
containers:
- name: php-redis
image: gcr.io/google-samples/gb-frontend:v4
resources:
requests:
cpu: 100m
memory: 100Mi
env:
- name: GET_HOSTS_FROM
value: dns
# If your cluster config does not include a dns service, then to
# instead access environment variables to find service host
# info, comment out the 'value: dns' line above, and uncomment the
# line below:
# value: env
ports:
- containerPort: 80
redis-frontend
68. Information
The Kubernetes Book
出版社: Independently
published
ISBN-10: 1521823634
ISBN-13: 978-1521823637
kubernetesの入門者向けの書籍で、イラスト図
が多くわかりやすい内容です。
Kubernetes in Action
出版社: Manning Pubns Co
ISBN-10: 1617293725
ISBN-13: 978-1617293726
内容は実践的となっていますが、こちらも図解
が多くて分かりやすい書籍です。