Kubernetes の運用・保守の始まりは、当然のことながらクラスタ環境の構築と切り離せません。この記事では、VirtualBox + Ubuntu 16 を使用したマシン上に Kubernetes を構築するまでの全過程を記録し、遭遇したいくつかの問題とその解決策も紹介します。 KubernetesについてWikipedia による Kubernetes の説明は次のとおりです。 Kubernetes (K8s とも呼ばれる) は、コンテナ化されたアプリケーションを自動的にデプロイ、スケーリング、管理するためのオープンソース システムです。このシステムは Google によって設計され、Cloud Native Computing Foundation (現在は Linux Foundation の一部) に使用するために寄贈されました。 Kubernetes は、サービス検出と負荷分散、ストレージ オーケストレーション、自動デプロイメントとロールバック、ボックス パッキングの自動完了、自己修復、キーと構成の管理機能を提供します。 基本的な環境の準備VirtualBoxをインストールするVirtualBox は、オープンソースで無料の強力な仮想マシン ソフトウェアです。ダウンロード アドレスはこちらです。VirtualBox のインストールは非常に簡単なので、ここでは詳しく説明しません。 Ubuntu 16 システムイメージをダウンロードここではシステムイメージとして Ubuntu 16 を選択しました。もちろん CentOS など他のシステムも使用できます。Ubuntu 16 のダウンロード アドレス。 仮想マシン x3 VirtualBox をインストールして Ubuntu 16 イメージをダウンロードしたら、まず 3 つの Ubuntu 16 仮想マシンを構築する必要があります。新しい仮想マシンを作成するプロセスは比較的簡単で、手順を 1 つずつ実行するだけです。新規作成が完了したら、各仮想マシンをそれに応じて構成する必要があります。構成中に使用するユーザーは、root ユーザーである必要があります。 仮想マシンのIP仮想マシンを使用しているため、各仮想マシンがインターネットにアクセスできるように、各仮想マシンにネットワーク カードを構成します。方法は 2 つあります。
これらのいずれかの方法を使用して、仮想マシンがインターネットにアクセスできるように仮想マシンのネットワーク カードを構成できます。 クラスターが構築された後、クラスター内の各ノードの IP アドレスは変更されないままである必要があることに注意してください。そうでない場合は、ノードを再参加する必要があります。 簡単な方法は、仮想マシンをシャットダウンするのではなくスリープ モードにして、次回起動することです。 クラスターでは、イントラネット アドレスを使用します。各仮想マシンに対応するイントラネット アドレスは、ifconfig または ip addr で確認できます。 > ifconfig enp0s3 リンク encap:イーサネット HWaddr 08:00:27:6f:23:2a inet アドレス:10.0.2.4 Bcast:10.0.2.255 マスク:255.255.255.0 inet6 アドレス: fe80::a00:27ff:fe6f:232a/64 スコープ:リンク アップブロードキャスト 実行中マルチキャスト MTU:1500 メトリック:1 RXパケット:3277016 エラー:0 ドロップ:0 オーバーラン:0 フレーム:0 TX パケット:3385793 エラー:0 ドロップ:0 オーバーラン:0 キャリア:0 衝突:0 トランザクションキュー数:1000 RX バイト:1084480916 (1.0 GB) TX バイト:2079122979 (2.0 GB) この仮想マシン (マスター) のアドレスは 10.0.2.4 です。 ホスト名の設定Kubernetes のノード名はホスト名によって決まるため、3 つの仮想マシンのホスト名をそれぞれ master、node1、node2 に設定できます。ホスト名を変更するには、/etc/hosts ファイルを変更して仮想マシンを再起動します。 # /etc/ホスト 10.0.2.4 マスター 10.0.2.5 ノード1 10.0.2.6 ノード2 SSH 非暗号化接続仮想マシンが実行中になったら、最初に 3 台の仮想マシンを接続し、SSH パスワード不要の接続を構成する必要があります。 ssh-keygen -t rsa -C '[email protected]' -f ~/.ssh/id_rsa -q -N '' ssh-keygen のパラメータの説明:
公開鍵と秘密鍵を他の 2 台の仮想マシンに配布し、公開鍵 (~/.ssh/id_rsa.pub) の内容を 3 台の仮想マシンすべての ~/.ssh/authorized_keys ファイルに書き込み、~/.ssh/authorized_keys ファイルの権限を 400 に設定します。 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 400 ~/.ssh/authorized_keys 構成が完了すると、次の方法で仮想マシンの 1 つ上の別の仮想マシンに接続できるようになります。 # マスターノードでssh root@node1 Kubernetes クラスターの構築3 つの仮想マシンをセットアップしたら、3 つのノードを持つ Kubernetes クラスターの構築を開始できます。 Dockerをインストールするapt-getアップデート-y apt-getインストール-y \ apt-transport-https \ ca証明書\ カール\ gnupg \ lsb リリース curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg エコー\ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) 安定版" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # DOCKERエンジンをインストールする apt-getアップデート-y apt-get install -y docker-ce docker-ce-cli containerd.io # 起動時にDockerが起動するように設定する systemctl で docker.service を有効にする systemctl で containerd.service を有効にする # Dockerを起動する systemctl ドッカーを起動する kubeadm、kubelet、kubectlをインストールするここで使用されている画像ソースは Alibaba Cloud です。 # apt パッケージインデックスを更新し、Kubernetes apt リポジトリを使用するために必要なパッケージをインストールします。apt-get update -y apt-get install -y apt-transport-https ca-certificates curl # Google Cloud 公開署名キーをダウンロードします# curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key を追加 - # Kubernetes apt リポジトリを追加します# echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list # apt パッケージインデックスを更新し、kubelet、kubeadm、kubectl をインストールして、それらのバージョンをロックします。apt-get update -y apt-get install -y kubelet kubeadm kubectl apt-mark ホールド kubelet kubeadm kubectl SWAPをオフにする/etc/fstab ファイルを編集し、スワップ パーティションの設定をコメント アウトします。 #/dev/mapper/master--vg-swap_1 なし スワップ sw 0 0 画像を事前にダウンロードするkubeadm init に必要なミラー リストを取得します。 > kubeadm 構成イメージリスト k8s.gcr.io/kube-apiserver:v1.21.1 k8s.gcr.io/kube-コントローラマネージャー:v1.21.1 k8s.gcr.io/kube-scheduler:v1.21.1 k8s.gcr.io/kube-proxy:v1.21.1 k8s.gcr.io/一時停止:3.4.1 k8s.gcr.io/etcd:3.4.13-0 k8s.gcr.io/coredns/coredns:v1.8.0 k8s のイメージソースは国内ユーザーには手の届かないところにありますが、まずは国内のイメージウェアハウスか、Alibaba Cloud のコンテナイメージサービス ACR や Docker の公式イメージウェアハウス DockerHub など、利用できるイメージウェアハウスに pull することができます。 1 つの Dockerfile だけで新しい GitHub コード リポジトリを作成できます。その内容は次のとおりです。 k8s.gcr.io/kube-apiserver:v1.21.0 から 次に、Alibaba Cloud のコンテナ イメージ サービス ACR で新しいイメージを作成し、それを GitHub コード リポジトリに関連付けます。ビルドされたイメージは、上記の k8s.gcr.io/kube-apiserver:v1.21.1 のような必要な k8s イメージですが、使用するときにイメージにラベルを付け直す必要があります。 ACR で必要なすべてのイメージを構築した後、次のスクリプトを使用して、イメージにタグを付けるタスクをすばやく処理します。 # aliyun レジストリからイメージをプルする kubeadm 構成イメージリスト | sed -e 's/^/docker pull /g' -e 's#k8s.gcr.io#registry.cn-shenzhen.aliyuncs.com/k8scat#g' -e 's#/coredns/coredns#/coredns#g' | sh -x # 画像のタグ付け docker イメージ | grep k8scat | awk '{print "docker tag",$1":"$2,$1":"$2}' | sed -e 's#registry.cn-shenzhen.aliyuncs.com/k8scat#k8s.gcr.io#2' | sh -x docker タグ k8s.gcr.io/coredns:v1.8.0 k8s.gcr.io/coredns/coredns:v1.8.0 # 画像を削除する docker イメージ | grep k8scat | awk '{print "docker rmi",$1":"$2}' | sh -x マスターノードを初期化する10.0.2.4 はマスターノードの IP アドレスです。ポッドのネットワークセグメントを 192.168.16.0/20 に設定します。 > kubeadm init --apiserver-advertise-address=10.0.2.4 --pod-network-cidr=192.168.16.0/20 kubeadm join 10.0.2.4:6443 --token ioshf8.40n8i0rjsehpigcl \ --ディスカバリートークンCA証明書ハッシュsha256:085d36848b2ee8ae9032d27a444795bc0e459f54ba043500d19d2c6fb044b065 ノードを追加kubeadm join 10.0.2.4:6443 --token ioshf8.40n8i0rjsehpigcl \ --ディスカバリートークンCA証明書ハッシュsha256:085d36848b2ee8ae9032d27a444795bc0e459f54ba043500d19d2c6fb044b065 kubectl設定ファイルを配布するscp マスター:/etc/kubernetes/admin.conf /etc/kubernetes/admin.conf echo 'export KUBECONFIG="/etc/kubernetes/admin.conf"' >> /etc/profile ソース /etc/profile ネットワークプラグインのインストールここではWeave Netを使用します。 # curl -L "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')" > weave-net.yaml # IPALLOC_RANGE を使用する場合 kubectl を適用 -f https://gist.githubusercontent.com/k8scat/c6a1aa5a1bdcb8c220368dd2db69bedf/raw/da1410eea6771c56e93f191df82206be8e722112/k8s-weave-net.yaml VirtualBox+Ubuntu16でKubernetesクラスターを構築する実装については以上です。VirtualBox+Ubuntu16でKubernetesクラスターを構築する実装の詳細については、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: JSは要素のドラッグとプレースホルダー機能を実装します
1. 基本環境1. オペレーティングシステム: CentOS 7.3 2. MySQL: 8.0.1...
目次1. ツールの紹介2. ワークフロー3. 操作インターフェースとパラメータ設定(1)監視と再起動...
おそらく誰もが js の実行によって DOM ツリーの解析とレンダリングがブロックされることを知って...
HTML <dl> タグ#定義と使用法<dl> タグは定義リストを定義します...
目次1. ランダムなブール値( true / false )を取得する2. 指定された日付が営業日で...
環境サーバー: centos7クライアント: ウィンドウCentos7 に docker+gitla...
目次1. MySQLのコンパイルとインストール: 2. 最初のマルチインスタンス3307を準備する3...
1. プロジェクトの実行時に報告されるエラー情報は次のとおりです。 ファイル "/home...
コンピュータ システムが再インストールされ、侵入テスト学習環境 DVWA を再インストールする必要が...
一般的なNginx構成ではクロスドメインが可能 サーバー{ 11111 を聞いてください。 serv...
(I) mysql5.7のインストール: ❀詳細:無料のグリーンバージョン5.7のインストール方法は...
序文決まり文句です。ここでは、フロントエンドとバックエンドの分離についての私の理解についてお話ししま...
Linux では、ハードディスクの追加やパーティションの再マウントといった状況に頻繁に遭遇します。こ...
この記事では、ネイティブ JS で実装されたドラッグ可能なログイン ボックスを紹介します。その効果は...
次のコードは、私の test.html にあります。ビデオは、c:\test.html などの絶対パ...