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
Kubernetesクラスタを組む
Search
katsunori nakajima
April 17, 2021
Programming
430
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Kubernetesクラスタを組む
Kubernetesクラスタを組む
katsunori nakajima
April 17, 2021
More Decks by katsunori nakajima
See All by katsunori nakajima
オリジナルのKubectlを作る
karosuwindam
0
430
Other Decks in Programming
See All in Programming
Contextとはなにか
chiroruxx
0
280
The NotImplementedError Problem in Ruby
koic
1
690
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
490
Modding RubyKaigi for Myself
yui_knk
0
910
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
240
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
120
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
3
1.3k
CSC307 Lecture 17
javiergs
PRO
0
320
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.2k
AIとASP.NET Coreで雑Webアプリを作った話
mayuki
0
490
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
100
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
190
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The Spectacular Lies of Maps
axbom
PRO
1
800
Un-Boring Meetings
codingconduct
0
310
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
Statistics for Hackers
jakevdp
799
230k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Thoughts on Productivity
jonyablonski
76
5.2k
Navigating Weather and Climate Data
rabernat
0
220
What's in a price? How to price your products and services
michaelherold
247
13k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
610
Transcript
Kubernetesクラスタを作 る 2021/4/17
自己紹介 • HN:カロス • 小江戸らぐ歴:12年ぐらい • イベントとかスタッフボランティア やっている • Tiwtter:karosuwindam
自画像
Kubernetesについて • 読み方は「Ku-ber-netes」だと思っています • 最新バージョン「1.21.0」 • できること • コンテナ運用の自動化 •
複数のPCにまたいだ、コンテナの運用 • コンテナへの接続がDockerより簡単にできる • 自動化のカスタマイズ(Operator) • できないこと(別途:機能を導入すれば不可能でない) • コンテナを動かすこと • コンテナのビルド • コンテナの状態監視
Kubernetesクラスタを用意する • 手順 1. 仮想環境を2台以上用意 2. SWAPを無効 3. IPフォワード設定 4.
コンテナランタイム(CRI-O)をインストール 5. Kubernetesの三つのソフトインストール 6. コントロールプレイン(master)の初期化 7. Workerの追加 8. CNIを導入(flannelを導入)
仮想マシーンについて • 以下の環境を複数用意 • CPU 2 • Memory 4GB •
Disk 20GB • OS:Ubuntu 20.10 • IP 固定 コントロールプレイン ワーカー ネットワーク
CRI-Oについて • CRI-Oとはコンテナランタイムの一つ • Dockerのコンテナを動かすための機能を実装したもの • インストール手順 • 特定カーネルモジュール(overlayとbr_netfilter)のロード •
パッケージの参照先を登録 • キーの追加 • cri-oとcri-o-runcをインストール • crioサービスの開始
Kubernetesの三つのソフトについて • kubeadm • Kubernetesクラスタを作成や追加時に使用するコマンド • kubelet • Kubernetesクラスタを動作させるためのサービス •
kubectl • Kubernetesクラスタのアクセスするためのコマンド
Kubernetesの三つのソフトのインストー ル • パッケージの参照先を登録 • キーの追加 • kubectlとkubelet、kubeadmをインストール
コントロールプレインの初期化 • CRI-O用のkubelet設定ファイルを挿入 sudo wget -O /etc/default/kubelet https://gist.githubusercontent.com/haircommander/2c07cc23887fa7c7f083dc61c7ef5791/raw/73e3d27dcd57e7de237c08758f76e0a36 8547648/cri-o-kubeadm •
初期化コマンド sudo kubeadm init --pod-network-cidr=10.244.0.0/16 • クラスタアクセスできるように mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
Workerを登録する • コントロールプレインへの登録 sudo kubeadm join 192.168.223.210:6443 --token roodeq.5e15i0m9qgnox7k5 --discovery-token-ca-cert-hash
sha256:c954f1bb27a4a085b5a1c3bf1ef60569e0226fba309fbe3 50d4bb660abbd817b
Joinの値を忘れたら? • Kubeadmで有効なtokenの情報を調べる。 • /etc/kubernetes/pki/ca.crtにある証明書のハッシュ値を調べ る。 echo sudo kubeadm join
$(hostname -I|awk '{print $1}'):6443 - -token $(kubeadm token list |sed -n 2P|awk '{print $1}') -- discovery-token-ca-cert-hash sha256:$(openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //')
クラスタを組んだら • kubectl get nodeコマンドでノードの登録状態を確認 • CNIを導入 • 自分はarmでも動くflannelを導入している kubectl
apply -f https://raw.githubusercontent.com/coreos/flannel/master/Document ation/kube-flannel.yml
今回の実行コマンドについて • 自分のGithubのサイト • https://github.com/karosuwindam/k8s-build-cri-o
Kubernetesクラスタを作ったら • Nginxのサービスを立ててみる • Prometheusの監視エージェントを導入してノード監視やPod監 視をやってみる • Dockerで運用していることをKubernetesで運用してみる • アプリをコンテナ化してKuberenetes運用をしてみる
Kubernetesを立てて 運用してみましょう