この記事は、バイナリ方式でk8sクラスターを手動でインストールする方法を紹介するシリーズです。目的は、k8sをよりよく理解して学習することです。学習と理解の目的で、ここの各コンポーネントは、練習と理解のために段階的に手動でインストールされます。実稼働環境では、ホストが独自のデータセンターにある場合は、プロのインフラストラクチャアーキテクトと開発チームに実稼働レベルのクラスターを構築するよう依頼してください。パブリッククラウド(AWS / GCP / Azure / Ali Cloud / Tencent Cloud)で実稼働環境を構築している場合は、関連するドキュメントを注意深く読み、不明な質問に間に合うように作業指示書を送信してください。
k8sクラスターをインストールする方法はたくさんあります。これは、kubeadminツールに基づいて作成およびインストールすることも、コンポーネントごとにインストールすることもできます。パブリッククラウド環境の場合は、コンソールUIまたはコマンドラインに基づいて作成およびインストールできます。前述のように、これは主に学習を目的としているため、バイナリを使用してコンポーネントごとに1つのコンポーネントを手動でインストールします。 k8sクラスターの作成方法に関係なく、以下の項目が考慮されます。
コンテナ:現在、コンテナは基本的にドッカーです。もちろん、コンテナはドッカーだけではありません。 podman(centos-8 / redhat-8がプレインストールされると言われています)やピボットの商用コンテナ(ピボットクラウドファウンドリパスで使用)など、コンテナの実装も多数あります。もちろん、コンテナ実装の一般原則についてはここでは詳しく説明しません。興味のある学生はlinux namespace / cgroup / ufsを学習すると、コンテナの一般原則を理解できます。
K8sの基本コンポーネント:ストレージコンポーネントetcd、マスターコンポーネントapi-server、controller-manager、kube-scheduler、workerコンポーネントkubelet、kube-proxy、クライアントツールkubectl。
コンテナ間のネットワーク通信:コンテナ間のネットワーク通信は、基本的にアンダーレイとオーバーレイの2つのタイプに分けられます。アンダーレイモードでは、通信プロセスに追加のパケットはなく、コンテナのホストは通常、データパケット転送を実現するためのルートとして使用されます。一般的な実装スキームは、flannelhost-gwモードとcalicobgpモードです。
オーバーレイモードには、通信プロセス中に追加のパケットがあります。たとえば、フランネルvxlanモード(3層ネットワークで2層ネットワークを構築する、つまり、エーテルパケットをudpパケットにカプセル化する)、calico ipipモード(ipパケットをipパケットに再度カプセル化する)などです。 。 ipパッケージをupdパッケージにカプセル化するflanneludpメソッドもあります(もちろん、このメソッドはtunデバイスを使用し、各通信にはユーザーモードからカーネルモードへの切り替えが含まれるため、効率は高くなく、基本的には使用されません。研究として始めることは可能です)。
フランネルとカリコのスキームに加えて、ウィーブ、ovs、その他のスキームもあります。K8sはネットワークスキーム自体を定義していません。結局のところ、ネットワークの実装には多くの状況があり、さまざまなシナリオの複雑さは同じではなく、一度にすべてを死ぬことは容易ではありません。 k8sは、さまざまなコミュニティにネットワークソリューションを公開する方がよいと思います。まず、独占ではないさまざまなk8sネットワークソリューションがあり、テクノロジーとコミュニティの開発に役立ちます。次に、ユーザーが自分の現実を追うこともできます。状況にはさまざまなオプションがあります。
この作品に興味のある学生は、linuxブリッジ、veth-pair、route-table、arp-table、iptable、nat、fdb、tun&tap device、ipip-tunnel、vxlan、bgp protocol、l2-miss、l3-について詳しく知ることができます。ミスやk8sネットワークソリューションなどの基本的な知識は、これらの基本的な知識に基づいて構築されています。ここでは詳しく説明しませんが、展開すればシリーズを書くことができます。
ミラーイメージウェアハウス:イメージの保存に使用されるリポジトリ。現在、ハーバー(vmwareオープンソース)とネクサス(言うまでもなく)がありますが、ハーバーはイメージリポジトリ専用であり、ネクサスはイメージリポジトリをサポートしています。もちろん、それが自作のプライベートリポジトリである場合は、ボリュームとハウスキーピングも考慮する必要があります(そのままにしておくことはできません)。オープンソースソリューションの場合、nsfを使用して短期的にボリュームをマウントし、ceph clusterを使用してボリュームを長期的にマウントすることを検討できます。もちろん、お金があればnasを使用できます。
コンテナdns:もちろんfqdnはコンテナ間の通信に使用されます(コンテナは動的に作成および破棄され、ipアドレスは確実に変更され、ipを使用することはできません。さらに、ipは覚えにくく、使用するのに不便です)、fqdnがあるため、次に、dnsサービスが必要です。 k8のさまざまなバージョンから、初期のsky-dn、後のkube-dn、最新のcorednなど、さまざまなdnがあります。
ビジュアルダッシュボード:通常、k8sクラスター内のリソースをUIコンソールの形式で表示し、リソースに対するいくつかの基本的な操作を提供するために使用されます。これは通常、kube-dashboardによって実装されます。
コンテナによって提供されるサービスへの外部アクセス:クラスタへのサービス展開は、クラスタの外部から呼び出す必要があります(少し意味がありません。外部から呼び出されるのではなく、内部でのみ相互に呼び出すことができます)。一般に、ノードポートモードと入力モードがあります。パブリッククラウド環境では、ベンダーごとに異なるロードバランサーモードが提供されます。もちろん、ノードポート方式のサービスでタイプとポートを定義することをお勧めします。ロードバランサー方式に関心のある学生は、さまざまなパブリッククラウドベンダーが提供するドキュメントを確認できます。イングレス、nginx-ingress、traefikイングレス、haproxyイングレスがより一般的に使用されます。
ミラーリリース管理:ミラーを使用すると、リリースしてクラスターにデプロイする必要があります。最も基本的なコマンドを使用できますが、より手間がかかります。もちろん、すでにツールヘルムがあり、私たちにとってはるかに便利です。 Helmには、クライアント、ティラーサーバー、チャートリポジトリ(ストアk8sアプリケーションパッケージ)も含まれています。
永続ストレージ:通常、k8のアプリケーションはステートレスですが、データの保存は避けられません。 k8sは、永続的なボリュームメカニズムを提供します。もちろん、最下層でnfs、ceph、nas、その他のストレージを使用できます。
監視と早期警告:どのアプリケーションにも監視と早期警告が確実に必要であり、k8sにはさらに多くのプログラムがあります。たとえば、prometheus + grafana、telegraf + grafana + influxdbなど、これも非常に大きなトピックなので、ここでは拡張しません。シリーズを作成するために拡張できます。
ログ収集:要約すると、ログを収集するには、基本的にサイドカーとデーモンセットの2つの方法があります。サイドカー方式では、各ポッドにログ収集エージェントをデプロイする必要がありますが、デーモンセット方式では、クラスターにログ収集エージェントデーモンセットをデプロイする必要があります。これには、各ポッドにログ収集エージェントのコンテナーは必要ありません。もちろん、多くのログ収集スキームがあります。Filebeat/ fluentd / logstash(logstashはより重く、通常は使用されません)がエージェント、esがストレージ、kabinaがビュー(ELK / EFG)です。もちろん、お金があれば、splunkを選択することもできます。もちろん、ログの収集と検索の機能を提供するだけではありません。
このインストールに使用したコンポーネントは次のとおりです。
d):helmpush(バージョン0.7.1、k8sアプリケーションパッケージをpriavte charts repo chartmuseumにプッシュするために使用)
環境紹介
OS:oracle virtual box, centos-7
マスター:1 vm、172.20.11.41
( もちろん、マスターHAはありません。興味のある学生は、nginx / haproxy + keepalivedを見ることができます)
ワーカー:2つのVM
172.20.11.42 /172.20.11.43
マスターインストール:
docker
etcd
flannel
kubectl
kube-apiserver
kube-scheduler
kube-controller-manager
kubectl-debug
docker-componse
harbor
nfs client
helm
chartmuseum
helmpush
最初にここに書き込み、次の記事でssl証明書の作成について紹介します。
Recommended Posts