Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OPENSHIFT4.2のインストールツールに見るクラスタの構築方法について
Search
SSSSSSSSSSSSHHHHHHHHHH
December 20, 2019
Technology
0
300
OPENSHIFT4.2のインストールツールに見るクラスタの構築方法について
OPENSHIFT4.2のインストールツールから
Self-Hosting Kubernetesという要点に基づいて説明しました。
SSSSSSSSSSSSHHHHHHHHHH
December 20, 2019
Tweet
Share
More Decks by SSSSSSSSSSSSHHHHHHHHHH
See All by SSSSSSSSSSSSHHHHHHHHHH
ベストプラクティス・ドリフト
sssssssssssshhhhhhhhhh
2
530
認定スラクムマスター研修 受講報告
sssssssssssshhhhhhhhhh
0
180
コンテナレジストリサーバーにコンテナ以外のものを格納する
sssssssssssshhhhhhhhhh
2
1.5k
Azure AD Pod Identityについて
sssssssssssshhhhhhhhhh
2
1.5k
AKSのdashboardは無効化したほうがよいか?
sssssssssssshhhhhhhhhh
0
110
Other Decks in Technology
See All in Technology
OCI Network Firewall 概要
oracle4engineer
PRO
1
7.8k
いまさら聞けない ABテスト入門
skmr2348
1
190
BtoBプロダクト開発の深層
16bitidol
0
160
ZOZOのAI活用実践〜社内基盤からサービス応用まで〜
zozotech
PRO
0
150
Modern_Data_Stack最新動向クイズ_買収_AI_激動の2025年_.pdf
sagara
0
190
AWSにおけるTrend Vision Oneの効果について
shimak
0
120
多野優介
tanoyusuke
1
200
Optuna DashboardにおけるPLaMo2連携機能の紹介 / PFN LLM セミナー
pfn
PRO
1
840
「技術負債にならない・間違えない」 権限管理の設計と実装
naro143
35
11k
生成AIで「お客様の声」を ストーリーに変える 新潮流「Generative ETL」
ishikawa_satoru
1
290
Geospatialの世界最前線を探る [2025年版]
dayjournal
3
480
「Verify with Wallet API」を アプリに導入するために
hinakko
1
220
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
79
6k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
The Invisible Side of Design
smashingmag
301
51k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
19
1.2k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
Six Lessons from altMBA
skipperchong
28
4k
How STYLIGHT went responsive
nonsquared
100
5.8k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
61k
We Have a Design System, Now What?
morganepeng
53
7.8k
Transcript
OPENSHIFT4.2のインスト レーションツールに見るクラ スタの構築方法について @genboku
2 本日の流れ 1. Kubernetesのアーキテクチャ 2. Self Hosting Kubernetes 3. OpenShiftのインストール
3 Kubernetesのアーキテクチャ Kubectl API server replication, namespace, serviceaccounts, etc. -controller-
manager -scheduler etcd Master node Worker node kubelet kube-proxy Container Runtime Pod Pod Containers Containers Worker node kubelet kube-proxy Container Runtime Pod Pod Containers Containers Internet https://github.com/Azure/aks-bestpractices- ignite19/blob/master/slides/ignite19_bestpractices_v2.pptx より改変
4 Kubernetesのアーキテクチャ Kubectl API server replication, namespace, serviceaccounts, etc. -controller-
manager -scheduler etcd Master node Worker node kubelet kube-proxy Container Runtime Pod Pod Containers Containers Worker node kubelet kube-proxy Container Runtime Pod Pod Containers Containers Internet https://kubernetes.io/ja/docs/concepts/overview/components/ • Kubernetesクラスタが機能す るために必要なノード ・マスターノード ・ワーカーノード • 各ノードにはクラスターが機 能するためのコンポーネント が存在
5 ノード/コンポーネントはどうやって配置される? Kubectl API server replication, namespace, serviceaccounts, etc. -controller-
manager -scheduler etcd Master node Worker node kubelet kube-proxy Container Runtime Pod Pod Containers Containers Worker node kubelet kube-proxy Container Runtime Pod Pod Containers Containers Internet https://github.com/ivanfioravanti/kubernetes-the-hard-way-on-azure Kubernetes the hardway on Azureの場合 • マスターノードとワーカー ノード ⇒VMとしてコマンドで直接起動 ・コンポーネント ⇒ VMの中でSystemdに登録さ れた常駐プロセスとして起動
6 …OpenShiftは?
7 oc get pods –A を実行
8 実行結果からわかること ・OpenShiftのマスターノードコンポー ネントはコンテナ/Podとして動く (Systemdなどに登録された常駐プロセス ではない) ・OpenShift自身が管理 = Self Hosting
Kubernetes
9 Self Hosting Kubernetesとは? Proposal: Self-hosted Control Planeより抜粋 https://github.com/kubernetes/community/blob/master/contributors/design-proposals/cluster-lifecycle/self-hosted-kubernetes.md Kubernetesクラスターの必須コンポーネントとオプションコン
ポーネントをKubernetes自体の上で実行すること Kubectl API server replication, namespace, serviceaccounts, etc. -controller- manager -scheduler Master node kubelet Container Runtime
10 メリット Proposal: Self-hosted Control Planeより抜粋 https://github.com/kubernetes/community/blob/master/contributors/design-proposals/cluster-lifecycle/self-hosted-kubernetes.md 1. ホスト(マスターノード)が必要なコンポーネントが 少なくなるのでインストール手順が簡素になる
2. デプロイメント方法(キッティング手順)が一貫性の ある操作で行える 3. イントロスペクション: Kubernetes APIを使用し て自分自身のデバッグを行える 4. クラスターのアップグレードをKubernetes APIを 介して行える 5. より簡単に高可用性な構成を組むことが可能になる
11 …ちょっと待ってください (これにたどり着いたときの自分の心の声)
12 APIサーバーのPodは そもそもどうやって デプロイしたか?
13 鶏と卵問題
14 ・StaticPodはkubeletが指定した所定のフォルダにyamlファ イルを置くとPodとして起動してくれる仕組み ・APIサーバーに接続できない状態でもkubeletに合わせて確実 に起動するのでログやVM等のAgentとして利用できる ※Static Podについて
15 OpenShift インストールツールで Self Hosting Kubernetesの実装を確認 してみましょう
16 説明の前に (免責事項) • OpenShift installer(OCP4.2.9)のmasterブランチのソース コードをリーディングした結果に基づいています • OpenShift on
Azure(Managedではなく、インストールツー ルで構築できる方)で構築してログを観察した推察を含んでいま す • 解説者はJava, Ansibleと心中したいので、golang, Terraformについては詳しくありません。Logrusのメソッド をたくさん仕込んで動作を確認しましたが、説明等至らないこ とがあればご容赦ください。大きな誤りがあれば遠慮なくおっ しゃってください。
17 OpenShiftのインストレーションツールが内部で行っている処理 openshift-install create cluster bootstrap用VM master用VM 1. Bootstrap用VMとMaster ノード用VMを作成
• 作成されたVMには何もコン ポーネントはインストール されない • この時点ではWorkerノード 用VMは作成されない
18 OpenShiftのインストレーションツールが内部で行っている処理 Ignitionファ イル bootstrap用VM master用VM 2. Ignitionと呼ばれるプロビ ジョニングツールを利用した、 サービスの起動処理の実施
→次のページで詳しく説明し ます
19 Terraformの特性とIgnitionを利用する理由 • Terraformは構築後のVMにアプリケーションをインストール することをあまりお勧めしていない(ようだ) https://www.terraform.io/docs/cloud/run/install-software.html • OpenShiftインストーラーはこの問題?を次の設定で解決 • 予め必要なツールがインストールされたVHDを用意
https://github.com/openshift/installer/blob/master/data/data/rhcos.json • RHCOSの独自機能であるIgnition※を利用したSystemdのサー ビス起動 ※CoreOS Container Linux専用に設計されたプロビジョニング ユーティリティツール。ユーザースペースがブートを開始する前 (initiramfsで)に構成を完了することができる。 https://coreos.com/ignition/docs/latest/
20 OpenShiftのインストレーションツールが内部で行っている処理 bootstrap用VM 3. Ignitionにより kubelet.service, bootkube.serviceなどの サービスが起動 ⇒bootstrap用VMの中に 簡易版Openshiftを構成する
21 OpenShiftのインストレーションツールが内部で行っている処理 bootstrap用VM 4. bootstrap用VMの中に構成 された簡易版Openshiftは MachineConfigOperatorなど のマニフェストファイルを順番 にデプロイ、実行 •
すでにVMがあるmaster用 VMには更にキッティングを 行い、必要なコンポーネント (apiserver, controller- manager, scheduller)は Operatorを通じて配置する • 存在しないworker用VMは作 成から行う master用VM worker用VM
23 OpenShiftのインストレーションツールが内部で行っている処理 bootstrap用VM 5. 下記の条件を確認後、bootstrap 用VMを削除 ・Serverのバージョン情報を取得で きること(oc get versionのServer
側と同じ情報) ・”bootstrap”configmap に”status: complete”が書き込ま れること master用VM worker用VM openshift-install create cluster
24 まとめ 1. OpenShiftのMasterノードのコンポーネントは OpenShift自身が管理している(Kubernetes Self Hosting) 2. OpenShiftのインストールツールはbootstrap用 VMの中に縮小版OpenShiftを作成し、構築対象
のOpenShiftのコンポーネントを配置している
25 参考資料 赤帽ブログ全般 https://rheb.hatenablog.com/ Openshift Installerリポジトリ https://github.com/openshift/installer/ OpenShift 4: Install
Experience https://blog.openshift.com/openshift-4-install-experience/ Installation and update https://docs.openshift.com/container-platform/4.2/architecture/architecture- installation.html Bootkubeリポジトリ https://github.com/kubernetes-sigs/bootkube/