はじめに 以前、Chocolatey Software社の方とのやり取…
このカテゴリでは、独自調査に基づく技術情報を公開します。
インフラエンジニアのためのKubernetesの基本
Kubernetesって何?をなんとなく理解するために、Kubernetesの動作に焦点を当てて、概要をまとめてみました。
Kubernetesを一言でいうと、
業界標準のOSSのコンテナオーケストレータです。
コンテナ
Kubernetesの理解の為にはコンテナについて知っておく必要があります。
コンテナで何ができるか知ってから、コンテナオーケストレータ(Kubernetes)で何ができるか学びましょう!
コンテナを一言でいうと、
専用のOS上で動いているような分離状態を作り出した、OS上のプロセスです。
このコンテナ上に、開発環境やアプリケーション実行環境、サービスなどを詰め込んで、どこでも実行することができます。
コンテナを動作させる一連の流れ
では実際にコンテナを動作させる一連の流れを見てみましょう!
まずはコンテナ作ってー!とコンテナ係にお願いします。
このコンテナを扱う係の事をコンテナランタイムと言います。
実際には高位ランタイムと中位ランタイム(CRI)と低位ランタイム(OCI)が動作を分担していますが、ここではシンプルに「ランタイム」でまとめて解説します。
よく聞くDockerというのもコンテナランタイムの名前です。
Dockerとはコンテナの事ではなく、コンテナを扱うためのプログラムのことを指すんですね。
コンテナ作成をお願いされたランタイム君は、コンテナの素を探しに展示場に行きます。
このコンテナの素のことをコンテナイメージ、展示場のことをレジストリ(DockerHubなど)と言います。厳密にはレジストリとリポジトリがありますが、ここではシンプルに概念だけつかんでいただけたらと思います。
そしてコンテナイメージを持って帰ってきてコンテナを実行します。
もちろんレジストリに無いコンテナイメージも、設計書があれば作成することができます。
この設計書のことをdockerfileと言います。
実際のdockerfileの例です。
FROM centos:7
RUN yum install -y java
RUN touch /tmp/test.txt # 変更箇所
ADD
… HAなRancherをVirtualBoxで構築しよう
Rancherってなに?
Kubernetes(K8s)を使いやすくするための、OSSのソフトウエアです!
簡単には以下のことができます。
- 異なる環境のK8sクラスタの一元管理
- K8sクラスタへのアプリの導入
- Istio(サービスメッシュ)との連携
うーん、便利そうですけどどうなんでしょう?
という事で、実際に作ってみて触ってみましょう!
Rancherを構築する
Rancherの構築には大きく分けて2種類あります。
- 単一ノードのRancherをDockerコンテナとして構築する。
- 高可用性のRancherをKubernetes内に構築する。
Dockerコンテナの方はたくさん記事があり、またIstioなどの機能を試してみたいので、高可用性Rancherの構築を行います!
Rancherの構成
以下の構成でRancherを構築してみようと思います。
- 基盤: Windows10上のVirtualBox
- 構成台数:Racher 3台 LB&DNS 1台
- CPU:3,2,2,1
- メモリ:4GB x 3, 1GB x 1
- OS:Ubuntu 18.04
- Nic:2つずつ(NAT, Internal)
- ロードバランサ(LB),DNS: LBとDNS用のUbuntuを1台構築します。(cpu=1, memoty =1GB)
Windows公式パッケージマネージャ「winget」とは
はじめに Microsoftは5月19日(米国時間)に、Windows…
Kubeadmで物理・仮想、セグメント跨ぎのハイブリッドクラスタ構築
Kubernetesを学習していて、いくつか疑問が湧いてきました。
- ネットワークのセグメント跨いだワーカノードの構成は簡単にできるのか
- GPUを乗せた物理サーバをクラスタに追加して、ポッド上からGPUを使うことはできるのか
- 仮想サーバと物理サーバを混ぜた構成でクラスタが構築できるのか
これらの疑問を一気に解決するために、新しくKubeadmでクラスタを構築してみました!
結論
思ったより簡単にできます!
難しい内容で、皆様が逃げてしまわないように結論から書きました。
構築支援ツールのkubeadmを使えば比較的簡単に構築できます!
kubeadm偉大ですね。
今回の完成イメージ
別セグメントにある、物理サーバを含めて、Kubernetesクラスタを構築します。
この環境では物理サーバと、その他のVMはルーティングされており、相互に通信ができます。
さて、この環境でKubernetesクラスタを構築していきましょう!
環境
ホスト名 | cpu | メモリ | GPU | OS | 仮想/物理 |
---|---|---|---|---|---|
controller-00 | 2コア | 2GB | なし | Ubuntu18.04 | 仮想 |
controller-01 | 2コア | 2GB | なし | Ubuntu18.04 | 仮想 |
controller-02 | 2コア | 2GB | なし | Ubuntu18.04 | 仮想 |
worker-00 |