SlideShare a Scribd company logo
1 of 32
Self-hosted Kubernetes を
調べてみた
INOH, Akihito / atoato88
Kubernetes Meetup Tokyo #8
Agenda
1. 私
2. Kubernetes
3. Self-hosted Kubernetes
4. まとめ
※本日の発表は個人の見解です。
私
Who am I ?
● INOH, Akihito / atoato88
○ OpenStack コミュニティ
■ OpenStack Summit Sydney で Kubernetes の LT してきました。
“Which is the best way to install Kubernetes on OpenStack”
Motohiro Otsuka, Akihito Inoh
○ 言語
■ Python (2014 - )
■ Go (2017 - )
○ 趣味(?)
■ I’m interested in deployment for k8s cluster with arm SoC, now.
自宅用のk8s環境を現在構築中。 できるといいな。
master: Raspberry Pi 3 3台
worker: ROCK64 MEDIA BOARD COMPUTER 3台
Kubernetes
Architecture
制御系
● etcd
● kube-apiserver
● kube-controller-manager
● kube-scheduler
実行系
● kubelet
etcd クラスタ
etcd node etcd node etcd node
Kubernetes クラスタ
kubelet kubelet kubelet
apiserver
apiserver
kube-apiserver
keepalived
クラスタ
haproxy
haproxy
haproxy
controller
managerkube-controller
manager
scheduler
kube-scheduler
VIP
Self-hosted Kubernetes
How to manage/deploy Kubernetes cluster?
● Ansible
○ https://github.com/kubernetes-incubator/kubespray
● Chef
● Puppet
● Terraform
○ https://coreos.com/tectonic
○ https://github.com/kubernetes/kops
● BOSH
○ https://pivotal.io/partners/kubo
● 独自ツール
○ ...
Kubernetes はコンテナ化された
アプリケーション(App+Env)を管理、
配布
Kubernetes は アプリケーション
Kubernetes は Kubernetes を
管理、配布
Kubernetes はコンテナ化された
アプリケーション(App+Env)を管理、
配布
Kubernetes は アプリケーション
Self-Hosted Kubernetes
自身で自身をデプロイ、管理。
できあがる Kubernetes Cluster のインスタンスは一つ。
What is Self-Hosting?
“Self-hosted” refers to the ability of a system to be expressed in terms of
itself.
● For a compiler, this means building the compiler from source using the
compiler itself.
● For an operating system, self-hosting implies that the install tools and
upgrade facilities use that operating system running on that machine to
implement their functions – that the system does not require a
supervisory host to bootstrap it into life.
This "hosted" model is seen in historical systems, in many systems during
their early development, and in minimalist embedded systems to this day.
Self-hosting solves chicken-and-egg problems in software.
https://coreos.com/blog/self-hosted-
kubernetes.html
Level of Self-Hosting
https://github.com/kubernetes/community/blob/master/contributors/design-proposals/cluster-lifecycle/self-hosted-kubernetes.md
etcd クラスタ
etcd node etcd node etcd node
Kubernetes クラスタ
kubelet kubelet kubelet
apiserver
apiserver
kube-apiserver
keepalived
クラスタ
haproxy
haproxy
haproxy
controller
managerkube-controller
manager
scheduler
kube-scheduler
VIP
DaemonSets
Deployments
DeploymentsKubernetes
Service
Service
Self-Hosted Lv.2-4
DaemonSets
Kubernetes クラスタ
etcd クラスタ
etcd node etcd node etcd node
kubelet kubelet kubelet
apiserver
apiserver
kube-apiserver
controller
managerkube-controller
manager
scheduler
kube-scheduler
DaemonSets
DaemonSets
Deployments
Deployments
Kubernetes
Service
Service
Self-Hosted Lv.0-4 (Ideal)
etcd Service
StatefulSets
Service
デプロイ手順
0. Manifest を作成
1. ノードに kubelet 起動
2. kubelet 上で etcd 起動
3. bootstrap 用 kubernetes
制御系起動
4. bootstrap を利用して
kubernetes 起動
5. bootstrap 削除
etcd クラスタ
etcd node etcd node etcd node
Kubernetes クラスタ
kubelet kubelet kubelet
apiserver
apiserver
kube-apiserver
keepalived
クラスタ
haproxy
haproxy
haproxy
controller
managerkube-controller
manager
scheduler
kube-scheduler
VIP
DaemonSets
DaemonSets
Deployments
DeploymentsKubernetes
Service
Service
Self-Hosted Lv.2-4
Working PC
the Tool
Master Master Master Worker Worker Worker
凡例
Systemd Unit
Static Pod
DaemonSet
Deployment
Pod,Container
Working PC
the Tool
Manifest
Manifest
Manifest
Master Master Master Worker Worker Worker
Manifest
Manifest
Systemd
Unit
凡例
Systemd Unit
Static Pod
DaemonSet
Deployment
Certs
Certs
Certs
Kubernetes 構築に必
要な asset を生成
Pod,Container
Working PC
the Tool
Manifest
Manifest
Manifest
Master Master Master Worker Worker Worker
kubelet kubelet kubelet kubelet kubelet kubelet
Systemd
Unit
凡例
Systemd Unit
Static Pod
DaemonSet
Deployment
Certs
Certs
Certs
Systemd
Unit
Systemd
Unit
Systemd
Unit
Systemd
Unit
Systemd
Unit
kubelet を各ノードで
systemd unit として起動
Pod,Container
Certs CertsCerts
Working PC
the Tool
Manifest
Manifest
Manifest
Master Master Master Worker Worker Worker
kubelet kubelet kubelet kubelet kubelet kubelet
etcd etcd etcd
凡例
Systemd Unit
Static Pod
DaemonSet
Deployment
Certs
Certs
Certs
Master Master Master
kubelet kubelet kubelet
Certs
Certs
Certs
etcd
Manifest
etcd
Manifest
etcd
Manifest
Master 各ノードで
etcd を Static Pod として起動
Pod,Container
Working PC
the Tool
Manifest
Manifest
Manifest
Master Master Master Worker Worker Worker
kubelet kubelet kubelet kubelet kubelet kubelet
etcd etcd etcd
bootstrap
kube-apiserver
bootstrap
kube-cm
bootstrap
kube-scheduler
凡例
Systemd Unit
Static Pod
DaemonSet
Deployment
Certsbootst
rap
Manifest
bootstrap で利用する、完全に動
作する Kubernetes Control
Plane を 1 ノードで起動
Pod,Container
Working PC
the Tool
Master Master Master Worker Worker Worker
kubelet kubelet kubelet kubelet kubelet kubelet
etcd etcd etcd
bootstrap
kube-apiserver
bootstrap
kube-cm
bootstrap
kube-scheduler
kube-apiserver kube-apiserver kube-apiserver
kube-proxy kube-proxy kube-proxy
kube-cm kube-cm
kube-schedulerkube-scheduler
kube-proxy kube-proxy kube-proxy
凡例
Systemd Unit
Static Pod
DaemonSet
Deployment
k8s
Manifest
bootstrap の Kubernetes に対して
Kubernetes 構築を指示する
Pod,Container
Working PC
the Tool
Master Master Master Worker Worker Worker
kubelet kubelet kubelet kubelet kubelet kubelet
etcd etcd etcd
kube-apiserver kube-apiserver kube-apiserver
kube-proxy kube-proxy kube-proxy
kube-cm kube-cm
kube-schedulerkube-scheduler
kube-proxy kube-proxy kube-proxy
凡例
Systemd Unit
Static Pod
DaemonSet
Deployment
必要なくなった bootstrap を削除
Pod,Container
Master Master Master Worker Worker Worker
kubelet kubelet kubelet kubelet kubelet kubelet
etcd etcd etcd
kube-apiserver kube-apiserver kube-apiserver
kube-proxy kube-proxy kube-proxy
kube-cm kube-cm
kube-schedulerkube-scheduler
kube-proxy kube-proxy kube-proxy
凡例
Systemd Unit
Static Pod
DaemonSet
Deployment
Flannel Flannel Flannel Flannel Flannel Flannel
keepalived keepalived keepalived
pod-checkpointer pod-checkpointer pod-checkpointer
kube-dns
HA 構成、Self-Hosted Kubernetes が動作。
以降の Kubernetes の運用は Kubernetes 越しに行う。
例: ログ収集、アップグレード
Pod,Container
アップグレード手順
1. Manifest を修正し、バー
ジョンを変更
2. kubernetes の CLI で設
定を反映
重要なこととして、Self-Hosted にす
ることで bootstrap を終えたあとは全
て cluster の管理は Kubernetes に任せ
ることができるので、ツールへの依存
は無くなります!
Kubernetes 上のアプリケーション Self-hosted Kubernetes
Deploy
Kubernetes で管理・実行
(kubectl create とか edit とかでよろしくや
る)
Self-hosted 対応のツールでデプロイ
Upgrade / Roll Back
Kubernetes で管理・実行
(kubectl create とか edit とかでよろしくや
る)
Scale Out / In
Config Setting
Operaions with Self-hosted Kubernetes
Kubernetes 上のアプリケーション Self-hostedじゃない Kubernetes
Deploy
Kubernetes で管理・実行
(kubectl create とか edit とかでよろしくや
る)
ツール(ansible, chef, puppet, ...)を使って
デプロイ・管理・実行
Upgrade / Roll Back
Scale Out / In
Config Setting
Operaions with Non-self-hosted Kubernetes
Tectonic kubeadm Magnum Rancher kubespray kubo remora
Major
Developer
CoreOS
Kubernetes
Community
OpenStack
Community
Rancher Labs
Kubernetes
Community
Cloud
Foundry
*independent
License proprietary Apache v2 Apache v2 Apache v2 Apache v2 Apache v2 Apache v2
Tool - - Heat - Ansible BOSH -
k8s version v1.7.5 v1.8.2 v1.6.2 v1.8.2 v1.8.2 v1.8.1 v1.7.x or later
OpenStack
Provider ready? Yes(alpha) Yes Yes No Yes Yes Yes
Self-Hosted Yes Yes※ No No No No Yes
Kubernetes deployment tools
※ v1.10 ではSelf-hosted 方式のデプロイがデフォルトになる
予定
まとめ
Self-hosted Kubernetes
● Kubernetes 自体もコンテナ化されたクラウドネイティブなアプリケーション
なので、Kubernetes で管理するのが簡単です
● 余計なツールはいりません
● kubeadm は今後のリリース(v1.10)で Self-hosted がデフォルトのデプロイ方式
になる予定です。
そのため、今後 Kubernetes のデプロイ方式が Self-hosted になる可能性もあ
ります。
● Self-Hosted Kubernetes makes Kubernetes installs, scaleouts, upgrades easier
○ https://coreos.com/blog/self-hosted-kubernetes.html
● Proposal: Self-hosted Control Plane
○ https://github.com/kubernetes/community/blob/master/contributors/design-proposals/cluster-
lifecycle/self-hosted-kubernetes.md
● Tectonic
○ https://coreos.com/tectonic/
● kubeadm
○ https://kubernetes.io/docs/admin/kubeadm/
○ https://github.com/kubernetes/kubernetes/tree/master/cmd/kubeadm
● remora
○ https://github.com/nec-openstack/remora
See also

More Related Content

What's hot

Kubernetes超入門 with java
Kubernetes超入門 with javaKubernetes超入門 with java
Kubernetes超入門 with javaYasunari Tanaka
 
Kubernetes etc.. & rancher 2.0 technical preview “Let’s import GKE/Bluemix/AK...
Kubernetes etc.. & rancher 2.0 technical preview “Let’s import GKE/Bluemix/AK...Kubernetes etc.. & rancher 2.0 technical preview “Let’s import GKE/Bluemix/AK...
Kubernetes etc.. & rancher 2.0 technical preview “Let’s import GKE/Bluemix/AK...cyberblack28 Ichikawa
 
Fission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyoFission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyoy_taka_23
 
Harbor RegistryのReplication機能
Harbor RegistryのReplication機能Harbor RegistryのReplication機能
Harbor RegistryのReplication機能Masanori Nara
 
Kubernetes Operator for vSphere VM
Kubernetes Operator for vSphere VMKubernetes Operator for vSphere VM
Kubernetes Operator for vSphere VMMasanori Nara
 
”30分”ぐらいでわかる「Kubernetes」について
”30分”ぐらいでわかる「Kubernetes」について”30分”ぐらいでわかる「Kubernetes」について
”30分”ぐらいでわかる「Kubernetes」についてYuya Ohara
 
kpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルドkpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルドMasanori Nara
 
OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話Kazuto Kusama
 
机上の Kubernetes - 形式手法で見るコンテナオーケストレーション #NGK2016B
机上の Kubernetes -  形式手法で見るコンテナオーケストレーション #NGK2016B机上の Kubernetes -  形式手法で見るコンテナオーケストレーション #NGK2016B
机上の Kubernetes - 形式手法で見るコンテナオーケストレーション #NGK2016By_taka_23
 
Knative Lambda Runtimeを試してみた
Knative Lambda Runtimeを試してみたKnative Lambda Runtimeを試してみた
Knative Lambda Runtimeを試してみたHideaki Aoyagi
 
GKEで半年運用してみた
GKEで半年運用してみたGKEで半年運用してみた
GKEで半年運用してみたKatsutoshi Nagaoka
 
Arukas meet Mesos/Marathon
Arukas meet Mesos/MarathonArukas meet Mesos/Marathon
Arukas meet Mesos/MarathonShuji Yamada
 
Kubernetesと暮らすRancherな生活
Kubernetesと暮らすRancherな生活Kubernetesと暮らすRancherな生活
Kubernetesと暮らすRancherな生活Go Chiba
 
Kubernetes etc.. & rancher2.0 technical preview
Kubernetes etc.. & rancher2.0 technical previewKubernetes etc.. & rancher2.0 technical preview
Kubernetes etc.. & rancher2.0 technical previewcyberblack28 Ichikawa
 
Certified XXX まわりのはなし Kubernetes Invitational Meetup #2
Certified XXX まわりのはなし Kubernetes Invitational Meetup #2Certified XXX まわりのはなし Kubernetes Invitational Meetup #2
Certified XXX まわりのはなし Kubernetes Invitational Meetup #2Masaya Aoyama
 
社内勉強会(Docker)
社内勉強会(Docker)社内勉強会(Docker)
社内勉強会(Docker)Shinya Sasaki
 
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE辰徳 斎藤
 

What's hot (20)

Kubernetes超入門 with java
Kubernetes超入門 with javaKubernetes超入門 with java
Kubernetes超入門 with java
 
俺とKubernetes
俺とKubernetes俺とKubernetes
俺とKubernetes
 
Kubernetes etc.. & rancher 2.0 technical preview “Let’s import GKE/Bluemix/AK...
Kubernetes etc.. & rancher 2.0 technical preview “Let’s import GKE/Bluemix/AK...Kubernetes etc.. & rancher 2.0 technical preview “Let’s import GKE/Bluemix/AK...
Kubernetes etc.. & rancher 2.0 technical preview “Let’s import GKE/Bluemix/AK...
 
Fission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyoFission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyo
 
Lattice深掘り話
Lattice深掘り話Lattice深掘り話
Lattice深掘り話
 
Harbor RegistryのReplication機能
Harbor RegistryのReplication機能Harbor RegistryのReplication機能
Harbor RegistryのReplication機能
 
Kubernetes Operator for vSphere VM
Kubernetes Operator for vSphere VMKubernetes Operator for vSphere VM
Kubernetes Operator for vSphere VM
 
”30分”ぐらいでわかる「Kubernetes」について
”30分”ぐらいでわかる「Kubernetes」について”30分”ぐらいでわかる「Kubernetes」について
”30分”ぐらいでわかる「Kubernetes」について
 
kpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルドkpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルド
 
OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話
 
机上の Kubernetes - 形式手法で見るコンテナオーケストレーション #NGK2016B
机上の Kubernetes -  形式手法で見るコンテナオーケストレーション #NGK2016B机上の Kubernetes -  形式手法で見るコンテナオーケストレーション #NGK2016B
机上の Kubernetes - 形式手法で見るコンテナオーケストレーション #NGK2016B
 
RKE + Rancher 2.0
RKE + Rancher 2.0RKE + Rancher 2.0
RKE + Rancher 2.0
 
Knative Lambda Runtimeを試してみた
Knative Lambda Runtimeを試してみたKnative Lambda Runtimeを試してみた
Knative Lambda Runtimeを試してみた
 
GKEで半年運用してみた
GKEで半年運用してみたGKEで半年運用してみた
GKEで半年運用してみた
 
Arukas meet Mesos/Marathon
Arukas meet Mesos/MarathonArukas meet Mesos/Marathon
Arukas meet Mesos/Marathon
 
Kubernetesと暮らすRancherな生活
Kubernetesと暮らすRancherな生活Kubernetesと暮らすRancherな生活
Kubernetesと暮らすRancherな生活
 
Kubernetes etc.. & rancher2.0 technical preview
Kubernetes etc.. & rancher2.0 technical previewKubernetes etc.. & rancher2.0 technical preview
Kubernetes etc.. & rancher2.0 technical preview
 
Certified XXX まわりのはなし Kubernetes Invitational Meetup #2
Certified XXX まわりのはなし Kubernetes Invitational Meetup #2Certified XXX まわりのはなし Kubernetes Invitational Meetup #2
Certified XXX まわりのはなし Kubernetes Invitational Meetup #2
 
社内勉強会(Docker)
社内勉強会(Docker)社内勉強会(Docker)
社内勉強会(Docker)
 
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
 

Similar to Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた

k8sクラスタ構築
k8sクラスタ構築k8sクラスタ構築
k8sクラスタ構築asuka y
 
CyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallengeCyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallengewhywaita
 
Kubernetesのワーカーノードを自動修復するために必要だったこと
Kubernetesのワーカーノードを自動修復するために必要だったことKubernetesのワーカーノードを自動修復するために必要だったこと
Kubernetesのワーカーノードを自動修復するために必要だったことh-otter
 
最近良く聞く Kubernetes を体験してみた イントロ + 活用編
最近良く聞く Kubernetes を体験してみた イントロ + 活用編最近良く聞く Kubernetes を体験してみた イントロ + 活用編
最近良く聞く Kubernetes を体験してみた イントロ + 活用編Fuminobu Takeyama
 
Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container ClusterオーケストレーションKubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container ClusterオーケストレーションTakashi Kanai
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみましたShuntaro Saiba
 
Docker & Kubernetes基礎
Docker & Kubernetes基礎Docker & Kubernetes基礎
Docker & Kubernetes基礎Daisuke Hiraoka
 
Kubernetes ときどき Serverless -- cndjp第1回勉強会
Kubernetes ときどき Serverless -- cndjp第1回勉強会Kubernetes ときどき Serverless -- cndjp第1回勉強会
Kubernetes ときどき Serverless -- cndjp第1回勉強会Hiroshi Hayakawa
 
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみたAKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみたHideaki Aoyagi
 
Infra: Kubernetes and GKE, Network
Infra: Kubernetes and GKE, NetworkInfra: Kubernetes and GKE, Network
Infra: Kubernetes and GKE, NetworkKuma Arakawa
 
これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門Yuto Takei
 
Virtual Kubelet and Virtual Node
Virtual Kubelet and Virtual NodeVirtual Kubelet and Virtual Node
Virtual Kubelet and Virtual NodeYoshio Terada
 
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...VirtualTech Japan Inc.
 
AKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab ContentsAKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab ContentsYoshio Terada
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Masahito Zembutsu
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門Masahito Zembutsu
 
Rancher 2.0 Technical Preview & Bluemix Kubernetes Cluster Import
Rancher 2.0 Technical Preview & Bluemix Kubernetes Cluster ImportRancher 2.0 Technical Preview & Bluemix Kubernetes Cluster Import
Rancher 2.0 Technical Preview & Bluemix Kubernetes Cluster ImportBMXUG
 
kubetnetes etc.. & Rancher2.0 Technical Preview -import BLUMIX K8S Clusters-
kubetnetes etc.. & Rancher2.0 Technical Preview -import BLUMIX K8S Clusters-kubetnetes etc.. & Rancher2.0 Technical Preview -import BLUMIX K8S Clusters-
kubetnetes etc.. & Rancher2.0 Technical Preview -import BLUMIX K8S Clusters-cyberblack28 Ichikawa
 
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
Kube con + cloudnativecon 2017 社内報告会(外部公開用)Kube con + cloudnativecon 2017 社内報告会(外部公開用)
Kube con + cloudnativecon 2017 社内報告会(外部公開用)Masaya Aoyama
 

Similar to Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた (20)

k8sクラスタ構築
k8sクラスタ構築k8sクラスタ構築
k8sクラスタ構築
 
CyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallengeCyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallenge
 
Kubernetesのワーカーノードを自動修復するために必要だったこと
Kubernetesのワーカーノードを自動修復するために必要だったことKubernetesのワーカーノードを自動修復するために必要だったこと
Kubernetesのワーカーノードを自動修復するために必要だったこと
 
最近良く聞く Kubernetes を体験してみた イントロ + 活用編
最近良く聞く Kubernetes を体験してみた イントロ + 活用編最近良く聞く Kubernetes を体験してみた イントロ + 活用編
最近良く聞く Kubernetes を体験してみた イントロ + 活用編
 
Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container ClusterオーケストレーションKubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみました
 
Docker & Kubernetes基礎
Docker & Kubernetes基礎Docker & Kubernetes基礎
Docker & Kubernetes基礎
 
Kubernetes ときどき Serverless -- cndjp第1回勉強会
Kubernetes ときどき Serverless -- cndjp第1回勉強会Kubernetes ときどき Serverless -- cndjp第1回勉強会
Kubernetes ときどき Serverless -- cndjp第1回勉強会
 
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみたAKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみた
 
Infra: Kubernetes and GKE, Network
Infra: Kubernetes and GKE, NetworkInfra: Kubernetes and GKE, Network
Infra: Kubernetes and GKE, Network
 
これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門
 
Virtual Kubelet and Virtual Node
Virtual Kubelet and Virtual NodeVirtual Kubelet and Virtual Node
Virtual Kubelet and Virtual Node
 
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
 
AKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab ContentsAKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab Contents
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
Rancher 2.0 Technical Preview & Bluemix Kubernetes Cluster Import
Rancher 2.0 Technical Preview & Bluemix Kubernetes Cluster ImportRancher 2.0 Technical Preview & Bluemix Kubernetes Cluster Import
Rancher 2.0 Technical Preview & Bluemix Kubernetes Cluster Import
 
kubetnetes etc.. & Rancher2.0 Technical Preview -import BLUMIX K8S Clusters-
kubetnetes etc.. & Rancher2.0 Technical Preview -import BLUMIX K8S Clusters-kubetnetes etc.. & Rancher2.0 Technical Preview -import BLUMIX K8S Clusters-
kubetnetes etc.. & Rancher2.0 Technical Preview -import BLUMIX K8S Clusters-
 
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
Kube con + cloudnativecon 2017 社内報告会(外部公開用)Kube con + cloudnativecon 2017 社内報告会(外部公開用)
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
 

Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた

  • 1. Self-hosted Kubernetes を 調べてみた INOH, Akihito / atoato88 Kubernetes Meetup Tokyo #8
  • 2. Agenda 1. 私 2. Kubernetes 3. Self-hosted Kubernetes 4. まとめ ※本日の発表は個人の見解です。
  • 3.
  • 4. Who am I ? ● INOH, Akihito / atoato88 ○ OpenStack コミュニティ ■ OpenStack Summit Sydney で Kubernetes の LT してきました。 “Which is the best way to install Kubernetes on OpenStack” Motohiro Otsuka, Akihito Inoh ○ 言語 ■ Python (2014 - ) ■ Go (2017 - ) ○ 趣味(?) ■ I’m interested in deployment for k8s cluster with arm SoC, now. 自宅用のk8s環境を現在構築中。 できるといいな。 master: Raspberry Pi 3 3台 worker: ROCK64 MEDIA BOARD COMPUTER 3台
  • 6. Architecture 制御系 ● etcd ● kube-apiserver ● kube-controller-manager ● kube-scheduler 実行系 ● kubelet etcd クラスタ etcd node etcd node etcd node Kubernetes クラスタ kubelet kubelet kubelet apiserver apiserver kube-apiserver keepalived クラスタ haproxy haproxy haproxy controller managerkube-controller manager scheduler kube-scheduler VIP
  • 8. How to manage/deploy Kubernetes cluster? ● Ansible ○ https://github.com/kubernetes-incubator/kubespray ● Chef ● Puppet ● Terraform ○ https://coreos.com/tectonic ○ https://github.com/kubernetes/kops ● BOSH ○ https://pivotal.io/partners/kubo ● 独自ツール ○ ...
  • 10. Kubernetes は Kubernetes を 管理、配布 Kubernetes はコンテナ化された アプリケーション(App+Env)を管理、 配布 Kubernetes は アプリケーション
  • 12. What is Self-Hosting? “Self-hosted” refers to the ability of a system to be expressed in terms of itself. ● For a compiler, this means building the compiler from source using the compiler itself. ● For an operating system, self-hosting implies that the install tools and upgrade facilities use that operating system running on that machine to implement their functions – that the system does not require a supervisory host to bootstrap it into life. This "hosted" model is seen in historical systems, in many systems during their early development, and in minimalist embedded systems to this day. Self-hosting solves chicken-and-egg problems in software. https://coreos.com/blog/self-hosted- kubernetes.html
  • 14. etcd クラスタ etcd node etcd node etcd node Kubernetes クラスタ kubelet kubelet kubelet apiserver apiserver kube-apiserver keepalived クラスタ haproxy haproxy haproxy controller managerkube-controller manager scheduler kube-scheduler VIP DaemonSets Deployments DeploymentsKubernetes Service Service Self-Hosted Lv.2-4 DaemonSets
  • 15. Kubernetes クラスタ etcd クラスタ etcd node etcd node etcd node kubelet kubelet kubelet apiserver apiserver kube-apiserver controller managerkube-controller manager scheduler kube-scheduler DaemonSets DaemonSets Deployments Deployments Kubernetes Service Service Self-Hosted Lv.0-4 (Ideal) etcd Service StatefulSets Service
  • 16. デプロイ手順 0. Manifest を作成 1. ノードに kubelet 起動 2. kubelet 上で etcd 起動 3. bootstrap 用 kubernetes 制御系起動 4. bootstrap を利用して kubernetes 起動 5. bootstrap 削除
  • 17. etcd クラスタ etcd node etcd node etcd node Kubernetes クラスタ kubelet kubelet kubelet apiserver apiserver kube-apiserver keepalived クラスタ haproxy haproxy haproxy controller managerkube-controller manager scheduler kube-scheduler VIP DaemonSets DaemonSets Deployments DeploymentsKubernetes Service Service Self-Hosted Lv.2-4
  • 18. Working PC the Tool Master Master Master Worker Worker Worker 凡例 Systemd Unit Static Pod DaemonSet Deployment Pod,Container
  • 19. Working PC the Tool Manifest Manifest Manifest Master Master Master Worker Worker Worker Manifest Manifest Systemd Unit 凡例 Systemd Unit Static Pod DaemonSet Deployment Certs Certs Certs Kubernetes 構築に必 要な asset を生成 Pod,Container
  • 20. Working PC the Tool Manifest Manifest Manifest Master Master Master Worker Worker Worker kubelet kubelet kubelet kubelet kubelet kubelet Systemd Unit 凡例 Systemd Unit Static Pod DaemonSet Deployment Certs Certs Certs Systemd Unit Systemd Unit Systemd Unit Systemd Unit Systemd Unit kubelet を各ノードで systemd unit として起動 Pod,Container
  • 21. Certs CertsCerts Working PC the Tool Manifest Manifest Manifest Master Master Master Worker Worker Worker kubelet kubelet kubelet kubelet kubelet kubelet etcd etcd etcd 凡例 Systemd Unit Static Pod DaemonSet Deployment Certs Certs Certs Master Master Master kubelet kubelet kubelet Certs Certs Certs etcd Manifest etcd Manifest etcd Manifest Master 各ノードで etcd を Static Pod として起動 Pod,Container
  • 22. Working PC the Tool Manifest Manifest Manifest Master Master Master Worker Worker Worker kubelet kubelet kubelet kubelet kubelet kubelet etcd etcd etcd bootstrap kube-apiserver bootstrap kube-cm bootstrap kube-scheduler 凡例 Systemd Unit Static Pod DaemonSet Deployment Certsbootst rap Manifest bootstrap で利用する、完全に動 作する Kubernetes Control Plane を 1 ノードで起動 Pod,Container
  • 23. Working PC the Tool Master Master Master Worker Worker Worker kubelet kubelet kubelet kubelet kubelet kubelet etcd etcd etcd bootstrap kube-apiserver bootstrap kube-cm bootstrap kube-scheduler kube-apiserver kube-apiserver kube-apiserver kube-proxy kube-proxy kube-proxy kube-cm kube-cm kube-schedulerkube-scheduler kube-proxy kube-proxy kube-proxy 凡例 Systemd Unit Static Pod DaemonSet Deployment k8s Manifest bootstrap の Kubernetes に対して Kubernetes 構築を指示する Pod,Container
  • 24. Working PC the Tool Master Master Master Worker Worker Worker kubelet kubelet kubelet kubelet kubelet kubelet etcd etcd etcd kube-apiserver kube-apiserver kube-apiserver kube-proxy kube-proxy kube-proxy kube-cm kube-cm kube-schedulerkube-scheduler kube-proxy kube-proxy kube-proxy 凡例 Systemd Unit Static Pod DaemonSet Deployment 必要なくなった bootstrap を削除 Pod,Container
  • 25. Master Master Master Worker Worker Worker kubelet kubelet kubelet kubelet kubelet kubelet etcd etcd etcd kube-apiserver kube-apiserver kube-apiserver kube-proxy kube-proxy kube-proxy kube-cm kube-cm kube-schedulerkube-scheduler kube-proxy kube-proxy kube-proxy 凡例 Systemd Unit Static Pod DaemonSet Deployment Flannel Flannel Flannel Flannel Flannel Flannel keepalived keepalived keepalived pod-checkpointer pod-checkpointer pod-checkpointer kube-dns HA 構成、Self-Hosted Kubernetes が動作。 以降の Kubernetes の運用は Kubernetes 越しに行う。 例: ログ収集、アップグレード Pod,Container
  • 26. アップグレード手順 1. Manifest を修正し、バー ジョンを変更 2. kubernetes の CLI で設 定を反映 重要なこととして、Self-Hosted にす ることで bootstrap を終えたあとは全 て cluster の管理は Kubernetes に任せ ることができるので、ツールへの依存 は無くなります!
  • 27. Kubernetes 上のアプリケーション Self-hosted Kubernetes Deploy Kubernetes で管理・実行 (kubectl create とか edit とかでよろしくや る) Self-hosted 対応のツールでデプロイ Upgrade / Roll Back Kubernetes で管理・実行 (kubectl create とか edit とかでよろしくや る) Scale Out / In Config Setting Operaions with Self-hosted Kubernetes
  • 28. Kubernetes 上のアプリケーション Self-hostedじゃない Kubernetes Deploy Kubernetes で管理・実行 (kubectl create とか edit とかでよろしくや る) ツール(ansible, chef, puppet, ...)を使って デプロイ・管理・実行 Upgrade / Roll Back Scale Out / In Config Setting Operaions with Non-self-hosted Kubernetes
  • 29. Tectonic kubeadm Magnum Rancher kubespray kubo remora Major Developer CoreOS Kubernetes Community OpenStack Community Rancher Labs Kubernetes Community Cloud Foundry *independent License proprietary Apache v2 Apache v2 Apache v2 Apache v2 Apache v2 Apache v2 Tool - - Heat - Ansible BOSH - k8s version v1.7.5 v1.8.2 v1.6.2 v1.8.2 v1.8.2 v1.8.1 v1.7.x or later OpenStack Provider ready? Yes(alpha) Yes Yes No Yes Yes Yes Self-Hosted Yes Yes※ No No No No Yes Kubernetes deployment tools ※ v1.10 ではSelf-hosted 方式のデプロイがデフォルトになる 予定
  • 31. Self-hosted Kubernetes ● Kubernetes 自体もコンテナ化されたクラウドネイティブなアプリケーション なので、Kubernetes で管理するのが簡単です ● 余計なツールはいりません ● kubeadm は今後のリリース(v1.10)で Self-hosted がデフォルトのデプロイ方式 になる予定です。 そのため、今後 Kubernetes のデプロイ方式が Self-hosted になる可能性もあ ります。
  • 32. ● Self-Hosted Kubernetes makes Kubernetes installs, scaleouts, upgrades easier ○ https://coreos.com/blog/self-hosted-kubernetes.html ● Proposal: Self-hosted Control Plane ○ https://github.com/kubernetes/community/blob/master/contributors/design-proposals/cluster- lifecycle/self-hosted-kubernetes.md ● Tectonic ○ https://coreos.com/tectonic/ ● kubeadm ○ https://kubernetes.io/docs/admin/kubeadm/ ○ https://github.com/kubernetes/kubernetes/tree/master/cmd/kubeadm ● remora ○ https://github.com/nec-openstack/remora See also

Editor's Notes

  1. タイトルは「Self-hosted kubernetes を調べてみた」です。
  2. 今月開催された OpenStack Summit Sydney で Self-hosted Kubernetes の LT を発表してきました。 あと自宅で arm と arm64 のヘテロな Kubernetes クラスターを構築中です。 よろしくお願いします。
  3. 皆さん知っていることだと思うので端折ります。 Kubernetes 自体のデプロイの関する部分で LT に必要なところだけ載せます。
  4. Kubernetes の一般的な構成のコンポーネント図を載せます。 Kubernetes の説明は終わり。
  5. さて、早々に Self-hosted Kubernetes の説明を始めます。
  6. 皆さんご存知かと思いますが、 Kubernetes はいろいろなツールを使ってデプロイすることができます。 が、ここで Kubernetes 自体の特性を考えてみましょう。
  7. Kubernetes はコンテナ化されたマイクロサービスアーキテクチャのアプリケーションを管理、配布するソフトです。 そして Kubernetes もまたマイクロサービスアーキテクチャで実装されたアプリケーションです。
  8. つまり、 Kubernetes を使って Kubernetes を管理、配布することができるということです。
  9. 図にすると、こう。 この構成を Self-hosted Kubernetes と言います。名前の通り自分が自分をホスト(そして管理)します。
  10. さて、この Self-hosted Kubernetes ですが、2016年8月に CoreOS の エンジニア(Josh Wood さん)がブログにポストしています。 コンピュータの分野ではセルフホストという概念はそこまで特別ではありません。例えばコンパイラとか。知ってる方もいるかと思います。 Kubernetes は複数のコンポーネントで構成されているので、 Self-hosted する対象を複数考えることができます。
  11. この図は Kubernetes プロジェクトに登録されている Self-hosted Kubernetes のプロポーザルから抜粋しています。 Self-hosted する対象をレベルに分けています。 すべてを Self-hosted すると level 0-4 と呼ぶようです。 主に CoreOS のエンジニアが開発している bootkube では level 2-4 を Self-hosted しています。
  12. Level 2-4 の時の Kubernetes コンポーネントと、 Kubernetes 上の管理オブジェクトの関係を表します。
  13. そしてこれが、 level 0-4 の時の図です。先ほどと比べて etcd や kubelet まで管理対象になっていることが分かると思います。 Self-hosted という軸で考えると最も理想的な構成です。 が、 Self-hosted する対象はシステムごとに適宜判断すればよく、そのためにレベルが分けられているようです。
  14. level 2-4 の構成の時のデプロイの手順を説明していきます。 ここで bootstrap という単語が出てきますが、小さな Kubernetes 環境だと思ってください。 ざっくり言うと、 何もない状態から bootstrap という最小構成の Kubernetes を作り、その Kubernetes に対して、デプロイ対象の Kubernetes の各種オブジェクトを定義していき、最後に bootstrap を削除するという流れです。
  15. ここでは図のような level 2-4 の構成を説明します。
  16. アセットなどを生成する。
  17. kubeletはsystemdのunitとして配布して動作する。
  18. bootstrap の Kubernetes に対して、デプロイ用の Kubernetes の構築を支持します。紫やブルーのコンポーネントが出来上がり、実際に使う Kubernetes のコンポーネントが立ち上がります。 これで Self-hosted な環境は出来上がってますが、後片付けをしていきます。
  19. 最終的な全体像はこうなります。
  20. 一度 Kubernetes の環境が出来上がると、アップグレードなどは楽です。 皆さんがすでに実践しているアプリの管理と同じということです。
  21. つまり、普段 Kubernetes 上のアプリケーションの管理を kubectl 等で実施すると思いますが、kubectl の管理範囲が Kuernetes 自身にも及ぶということです。 色分けするとこうですね。緑は Kubernetes で管理するオペレーション。黄色は独自ツールで管理するオペレーション。黄色が殆ど無いですね。 Kubernetes を管理するために kubectl を使えば良く、独自ツールの使い方を覚える必要がほぼ無いからです。
  22. Self-hosted じゃない Kubernetes の管理方法と比べると利点がわかりやすいです。 Self-hosted じゃない時は緑と黄色でそれぞれの使い方を覚える必要があります。
  23. さて、 Kubernetes デプロイツールの比較をします。ツールはいろいろありますが、 Self-hosted という軸で見てみると対応しているツールはそこまで多くありません。 Tectonic, kubeadm, remora が現状対応しています。 Tectonic は CoreOS が開発している bootkube の商用版です。bootkube も当然 Self-hosted 対応しています。 kubeadm は Kubernetes プロジェクトの標準デプロイツールです。まだベータバージョンですが、バージョンv1.10 では Self-hosted 構成をデフォルトにする予定で開発されています。 最後に remora 。 これは主に私も含む一部のエンジニアが開発しているツールです。(ゴールとしては OpenStack のクラウドプロバイダーに標準対応したツールにすることです。)