Slide 1

Slide 1 text

Kubernetesクラスタを作 る 2021/4/17

Slide 2

Slide 2 text

自己紹介 • HN:カロス • 小江戸らぐ歴:12年ぐらい • イベントとかスタッフボランティア やっている • Tiwtter:karosuwindam 自画像

Slide 3

Slide 3 text

Kubernetesについて • 読み方は「Ku-ber-netes」だと思っています • 最新バージョン「1.21.0」 • できること • コンテナ運用の自動化 • 複数のPCにまたいだ、コンテナの運用 • コンテナへの接続がDockerより簡単にできる • 自動化のカスタマイズ(Operator) • できないこと(別途:機能を導入すれば不可能でない) • コンテナを動かすこと • コンテナのビルド • コンテナの状態監視

Slide 4

Slide 4 text

Kubernetesクラスタを用意する • 手順 1. 仮想環境を2台以上用意 2. SWAPを無効 3. IPフォワード設定 4. コンテナランタイム(CRI-O)をインストール 5. Kubernetesの三つのソフトインストール 6. コントロールプレイン(master)の初期化 7. Workerの追加 8. CNIを導入(flannelを導入)

Slide 5

Slide 5 text

仮想マシーンについて • 以下の環境を複数用意 • CPU 2 • Memory 4GB • Disk 20GB • OS:Ubuntu 20.10 • IP 固定 コントロールプレイン ワーカー ネットワーク

Slide 6

Slide 6 text

CRI-Oについて • CRI-Oとはコンテナランタイムの一つ • Dockerのコンテナを動かすための機能を実装したもの • インストール手順 • 特定カーネルモジュール(overlayとbr_netfilter)のロード • パッケージの参照先を登録 • キーの追加 • cri-oとcri-o-runcをインストール • crioサービスの開始

Slide 7

Slide 7 text

Kubernetesの三つのソフトについて • kubeadm • Kubernetesクラスタを作成や追加時に使用するコマンド • kubelet • Kubernetesクラスタを動作させるためのサービス • kubectl • Kubernetesクラスタのアクセスするためのコマンド

Slide 8

Slide 8 text

Kubernetesの三つのソフトのインストー ル • パッケージの参照先を登録 • キーの追加 • kubectlとkubelet、kubeadmをインストール

Slide 9

Slide 9 text

コントロールプレインの初期化 • 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

Slide 10

Slide 10 text

Workerを登録する • コントロールプレインへの登録 sudo kubeadm join 192.168.223.210:6443 --token roodeq.5e15i0m9qgnox7k5 --discovery-token-ca-cert-hash sha256:c954f1bb27a4a085b5a1c3bf1ef60569e0226fba309fbe3 50d4bb660abbd817b

Slide 11

Slide 11 text

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/^.* //')

Slide 12

Slide 12 text

クラスタを組んだら • kubectl get nodeコマンドでノードの登録状態を確認 • CNIを導入 • 自分はarmでも動くflannelを導入している kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Document ation/kube-flannel.yml

Slide 13

Slide 13 text

今回の実行コマンドについて • 自分のGithubのサイト • https://github.com/karosuwindam/k8s-build-cri-o

Slide 14

Slide 14 text

Kubernetesクラスタを作ったら • Nginxのサービスを立ててみる • Prometheusの監視エージェントを導入してノード監視やPod監 視をやってみる • Dockerで運用していることをKubernetesで運用してみる • アプリをコンテナ化してKuberenetes運用をしてみる

Slide 15

Slide 15 text

Kubernetesを立てて 運用してみましょう