研究ノート X86/ARM アーキテクチャ - Kubernetes クラスターの構築

記事ディレクトリ

1。概要

1.1 意味

Kubernetesは、アプリケーションの展開、スケーリング、管理を自動化し、コンテナ化されたワークロードとサービスを管理し、宣言的な構成と自動化を促進するために使用されるオープンソースのコンテナ オーケストレーションおよび管理プラットフォームです。Kubernetes はポータブルで拡張可能なオープン ソース プラットフォームであり、Kubernetes には幅広いサービス、サポート、ツールを備えた大規模で急速に成長するエコシステムがあります。Kubernetes クラスターは、コンテナ化されたアプリケーションを実行および管理するために連携して動作する複数の物理または仮想コンピューター ノードの集合です

1.2 特徴

  • サービスの検出と負荷分散

    Kubernetes は、DNS 名または独自の IP アドレスを使用してコンテナを公開できます。コンテナに大量のトラフィックが流入する場合、Kubernetes はネットワーク トラフィックを負荷分散して分散し、デプロイメントを安定させることができます。

  • ストレージオーケストレーション

    Kubernetes を使用すると、ローカル ストレージ、パブリック クラウド プロバイダーなど、選択したストレージ システムを自動的にマウントできます。

  • 自動展開とロールバック

    Kubernetes を使用すると、デプロイされたコンテナーの望ましい状態を記述することができ、制御された速度で実際の状態を望ましい状態に変更できます。たとえば、Kubernetes を自動化して、デプロイメント用の新しいコンテナーを作成し、既存のコンテナーを削除して、そのすべてのリソースを新しいコンテナーに使用できます。

  • 箱詰め計算を自動的に完了

    Kubernetes に多数のノードからなるクラスターを提供し、このクラスター上でコンテナー化されたタスクを実行します。各コンテナーに必要な CPU とメモリ (RAM) の量を Kubernetes に指示します。Kubernetes は、リソースを最適に使用するために、必要に応じてこれらのコンテナーをノード上でスケジュールできます。

  • 自己修復

    Kubernetes は、失敗したコンテナを再起動し、コンテナを置き換え、ユーザー定義のヘルスチェックに応答しないコンテナを強制終了し、サービスの準備が整うまでクライアントに通知しません。

  • キーと構成の管理

    Kubernetes を使用すると、パスワード、OAuth トークン、SSH キーなどの機密情報を保存および管理できます。コンテナー イメージを再構築したり、スタック構成でキーを公開したりせずに、キーとアプリケーション構成をデプロイおよび更新できます。

1.3マスターノード

Kubernetes クラスターの制御ノードは、クラスター全体の管理と制御を担当しますマスター ノードには、API サーバー、スケジューラー (Scheduler)、コントローラー マネージャー (Controller Manager)、etcd (クラスター構成情報の保存に使用) などの複数のコンポーネントが含まれています。

1.4ワーカーノード

ミニオン ノードとも呼ばれるこれは、 Kubernetes クラスター内のワーカー ノードであり、コンテナ化されたアプリケーションの実行を担当します各ワーカー ノードには kubelet と呼ばれるエージェントがあり、マスター ノードと通信し、そのノード上で実行されているコンテナを管理します。

1.5ポッド

ポッドは、Kubernetes の最小のスケジューリング単位であり、1 つ以上の関連コンテナの組み合わせです。ポッドはワーカー ノード上で実行され、同じネットワーク名前空間とストレージ ボリュームを共有します。ポッドは、コンテナ間でネットワークとリソースを共有するためのメカニズムを提供します。

1.6ReplicaSet とデプロイメント

ReplicaSet は Kubernetes のリソース オブジェクトであり、一連の Pod のコピー数を定義するために使用されます。デプロイメントは ReplicaSet の高レベルの抽象化であり、アプリケーションの宣言的な定義と管理を提供し、デプロイメント中のローリング更新を可能にします。

1.7サービス

Service は、Pod の安定したアクセス アドレスネットワーク ポリシーのセットを定義する Kubernetes リソースですService は、 Pod 間の負荷分散とサービス検出のメカニズムを提供し、固定ネットワーク エンドポイントを介してアプリケーションにアクセスできるようにします。

1.8クベクトル

kubectl は、Kubernetes クラスターと対話するためのKubernetes のコマンドライン ツールです。これにより、ユーザーはコンテナ化されたアプリケーション、ポッド、サービス、デプロイメントなどの作成、管理、監視などのさまざまな操作を実行できます。kubectl は Kubernetes API と通信するための主な方法であり、k8s をインストールするための豊富なコマンドと 2.2X86 アーキテクチャを提供します。

2. 詳細な手順

例証します:

2023年6月19日現在、kubeketサービスが起動できないため、本節の修正・学習を一時停止しております。偉い人たちに指摘してください

ステップ 1: 基本的な環境構成

1. システムアーキテクチャを確認する

uname -a

例証します:

ここに画像の説明を挿入します

  • システム環境がx86_64「プロセッサ アーキテクチャ」であることがわかります。これは、現在のシステムが 64 ビット x86 アーキテクチャに基づいていることを示しています。

2. ファイアウォールを閉じるか、必要なポートを開きます

systemctl stop firewalld  # 停止防火墙服务
systemctl disable firewalld # 禁用防火墙服务

説明: 結果

  • ファイアウォールのステータスを表示する

    systemctl status firewalld
    

    ここに画像の説明を挿入します

  • ファイアウォール サービスが非アクティブであることが確認できたら、シャットダウンが成功したことを意味します。

3. Selinux セキュリティ モジュールをオフにする

sudo sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久关闭,重启后生效
sudo setenforce 0 # 临时关闭,即可生效

説明: 結果

  • Selinux ステータスの表示

    getenforce 
    

    ここに画像の説明を挿入します

補充:

SeLinux (Security-Enhanced Linux) は、セキュリティが強化された Linux セキュリティ モジュールであり、k8s のインストール時にこれをオフにすると、コンポーネントのアクセスと権限の問題を回避できます。

4. スワップパーティションを閉じる

swapoff -a # 临时关闭swap分区

説明: 結果

  • スワップ パーティションのステータスを表示する

    free -m
    

ここに画像の説明を挿入します

  • Swapスワップ領域のメモリ容量が解放されたことがわかります。

補充:

スワップ パーティショニングは、メモリ内のデータを交換してハード ディスク上の領域をスワップすることで、システムの利用可能なメモリを拡張するために仮想メモリに使用されるメカニズムです。k8s のインストール時に閉じて、ノード上のメモリの信頼性と予測可能性を確保し、クラスターの安定性とパフォーマンスを確保します。

5. スワップパーティションの自動マウントを無効にする

sed -i 's$/dev/mapper/centos-swap$#/dev/mapper/centos-swap$g' /etc/fstab

例証します:

置換/dev/mapper/centos-swap文字列は次のように置き換えられます#/dev/mapper/centos-swap

補充:

  • sed: は、テキストを処理および変換するためのストリーム エディタです。
  • -i: 標準出力に出力するのではなく、元のファイルに直接変更が加えられることを示します。
  • 's$/dev/mapper/centos-swap$#/dev/mapper/centos-swap$g': これはsedの代替コマンドです。このうち、 はs置換操作の開始を表し、$置換パターンと置換内容を区切るためのセパレータです。/dev/mapper/centos-swap置換されるパターンであり、/dev/mapper/centos-swap置換後のコンテンツです。gこれは、最初に一致したコンテンツだけでなく、一致したすべてのコンテンツを置換することを意味します。

6. ネットワークブリッジングの転送ルールを設定する

sudo bash -c 'cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF'

例証します:

  • 転送ルールを表示する
    ここに画像の説明を挿入します

補充:

cat > /etc/sysctl.d/k8s.conf:catコマンドを使用してファイルを作成し、出力を/etc/sysctl.d/k8s.confファイルにリダイレクトします。>記号はリダイレクトされた出力を示します。<< EOF: ヒアドキュメント(ヒアドキュメント)の開始タグで、複数行のテキストを入力することを示します。EOF入力の終了を示す終了タグです。

補充:

これらの構成パラメータは、Linux カーネルのネットワーク ブリッジ機能を有効にし、IPTable および IP6Table を通じてネットワーク トラフィックが正しく処理されるようにするために使用されます。これらの構成は、ネットワーク プラグイン(Flannel、Calico など) を使用する場合、およびKubernetes クラスターでのネットワーク通信とルーティングを行う場合に非常に重要です。これらのパラメータをファイルに書き込むことで/etc/sysctl.d/k8s.conf、システムの起動時にこれらの設定が自動的にロードされ、Linux カーネルのネットワーク ブリッジ機能が正しく設定されるようになります。

7. ファイル内のカーネルパラメータ設定を再ロードします。

sysctl --system

例証します:

このコマンドはカーネル パラメータを再ロードすることで、sysctl --systemシステムを再起動せずに新しい設定をすぐに有効にすることができます。これは、システム パフォーマンスの調整、ネットワーク設定の最適化、または特定の問題の解決が必要な場合に役立ちます。

8. Yum ソースの構成

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

例証します:

という名前のウェアハウス ファイルを作成しkubernetes.repo、Alibaba Cloud の Kubernetes ウェアハウス アドレスを構成し、GPG 検証を無効にします。これにより、yum コマンドを使用してこのリポジトリから Kubernetes 関連のパッケージをインストールできるようになります。

知らせ:

インストール システムのアーキテクチャが Arm アーキテクチャの場合、インストールkubernetes.repoウェアハウス ファイルのベース URL を Arm のダウンロード アドレスに変更する必要があります。つまり、次のような構成になります

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-aarch64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

補充:

イメージ ソースを構成するには、Alibaba Cloud ウェアハウスのアドレスを表示できます: kubernetes image_kubernetes ダウンロード address_kubernetes インストール チュートリアル - Alibaba オープン ソース ミラー ステーション (aliyun.com)

9. Yum ソースを更新する

yum -y update

ステップ 2: 依存環境をインストールする

1.環境依存関係をインストールする

yum install -y ebtables socat ipset conntrack

例証します:

  • ebtables: ebtables は、Linux カーネル内でイーサネット ブリッジのパケット フィルタリング ルールを操作できるようにするイーサネット ブリッジ用のフィルタです。ネットワーク トラフィックの制御、ネットワーク ポリシーの設定などに使用できます。
  • socat: socat は、TCP、UDP、UNIX ソケットなどのさまざまなタイプの接続を確立するために使用される強力なネットワーク ツールです。ポート転送、プロキシ、ネットワーク デバッグなどのタスクに使用できます。
  • ipset: ipset は、IP アドレスのセットを管理するためのツールです。これにより、IP アドレスのコレクションを作成および操作できるようになり、効率的な IP アドレスの照合とフィルタリングが可能になります。ipset は、ファイアウォール設定、アクセス制御リストなどに使用できます。
  • conntrack: conntrack は、Linux カーネルのネットワーク接続のステータスを追跡するために使用される接続追跡ツールです。これを使用して、アクティブな接続、接続追跡テーブルなどを表示および操作できます。conntrack は、ネットワーク セキュリティとネットワーク分析に役立ちます。

補充:

  • これらの依存関係は、ネットワーク分離、トラフィック管理、接続追跡、セキュリティ ポリシー実装に必要な機能とツールを Kubernetes クラスターに提供します。これらは、クラスターのネットワーク パフォーマンス、セキュリティ、信頼性を確保するために重要です。
  • Kubernetes バージョン 1.18 以上をインストールする場合は、上記の依存関係をインストールすることをお勧めします。

2.時刻同期サービスをインストールする

yum install chrony -y # 安装时间同步服务
systemctl enable chronyd.service # 启用时间同步服务
systemctl start chronyd.service # 开启时间同步服务

説明: 結果

  • クロニーステータスの表示

    systemctl status chronyd.service
    

    ここに画像の説明を挿入します

  • chronyc ソースを表示

    chronyc sources
    

    ここに画像の説明を挿入します

  • すべてのノードにこのサービスが存在する場合は、成功を示します。

例証します:

chronyは、正確な時計同期と時刻調整機能を提供する、コンピューターの時刻同期用ツールです k8s をインストールするときは、時刻同期サービスをインストールし、タイムゾーンを UTC ではなくアジアと上海に切り替えます。

3. Dockerコンテナサービスをインストールする

3.1 インストール可能なDockerのバージョンを確認する

yum list docker-ce --showduplicates | sort -r 

例証します:

ここに画像の説明を挿入します

  • システム内にインストールできる一致するソフトウェア パッケージがないことを示すメッセージが表示された場合。次にDockerソースを追加します

    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
  • Docker のインストール可能なバージョンを再度確認する

    ここに画像の説明を挿入します

  • システムCPUがX86アーキテクチャの場合、x86アーキテクチャのDockerインストールイメージが表示されます

知らせ:

ここに画像の説明を挿入します

  • システムCPUがArmアーキテクチャの場合、ArmアーキテクチャのDockerインストールイメージが表示されます

3.2 yum を置き換えて Docker ソースをインストールする

sudo sed -i 's+download.docker.com+repo.huaweicloud.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

3.3 指定されたバージョンの Docker イメージをインストールする

sudo yum -y install docker-ce-3:20.10

例証します:

  • Dockerのバージョンを確認する

    sudo docker version
    

ここに画像の説明を挿入します

  • 作者はここで指定されたバージョンをダウンロードできません、それは本当に奇妙です、ネチズンがコメントしてくれることを願っています

補充:

Docker のインストール Kubernetes (K8s) をインストールする場合、環境は重要な役割を果たします。Kubernetes は、コンテナ ランタイムに依存してコンテナを作成および管理するコンテナ オーケストレーションおよび管理プラットフォームです。Docker は最も人気のあるコンテナ ランタイムの 1 つであり、アプリケーション コンテナを作成、パッケージ化、実行するための便利で信頼性の高い方法を提供します。

補充:

  • Dockerサービスを削除する

    sudo yum remove docker*
    
  • yum ツールを使用して Docker 関連ファイルを削除する

3.4 Docker イメージ アクセラレータの構成

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
        "https://7mimmp7p.mirror.aliyuncs.com",
        "https://registry.docker-cn.com",
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn"
        ]
}
EOF

例証します:

Docker イメージ アクセラレータを設定する目的は、Docker イメージのダウンロード速度を高速化することです。デフォルトでは、Docker は Docker Hub からイメージをダウンロードします。

3.5 Dockerの起動

sudo systemctl daemon-reload # 重新加载 Systemd 的配置文件
systemctl enable docker.service #  启用Docker服务
systemctl start docker # 启动Docker服务

例証します:

  • Docker サービスを表示する

    systemctl status docker.service
    

    ここに画像の説明を挿入します

  • Docker イメージ アクセラレータ構成の表示

    docker info|grep "Registry Mirrors" -A 1
    

    ここに画像の説明を挿入します

4. kubelet、kubeadm、kubectl コンポーネントをインストールする

yum install -y kubelet-1.22.12 kubeadm-1.22.12 kubectl-1.22.12 --disableexcludes=kubernetes  # 安装 kubelet,kubeadm,kubectl
systemctl enable kubelet # 	启用kubelet服务 

例証します:

  • kubelet サービスのステータスを確認する

    systemctl status kubelet
    

    ここに画像の説明を挿入します

  • この時点ではサービスは開始されていませんが、このノードをマスターノードとして初期化していないため正常な状態であり、初期化が完了すると自動的に開始されます。

  • kubeadm、kubectl ツールのステータスを確認する

    kubeadm version
    kubectl version
    

ここに画像の説明を挿入します

補充:

  • --disableexcludes=kubernetes: これは、構成されているパッケージ除外ルールを無効にするオプションです。このコマンドでは、他のパッケージ除外ルールが存在する場合でも、指定されたバージョンの kubelet、kubeadm、および kubectl が確実にインストールされます。
  • 完全な Kubernetes 環境を構築し、kubectl コマンドを使用してクラスター内のリソースを管理および操作します。kubelet は各ノードでコンテナーの実行と監視を担当し、kubeadm はクラスターの初期化プロセスを簡素化します。これらのコンポーネントは連携して、コンテナ化されたアプリケーションを作成、デプロイ、管理するためのインフラストラクチャを提供します。

ステップ 3: 各ノードの構成

1. 各ノードにネットワークホスト名を設定します。

1.1マスターノード名の設定

hostnamectl set-hostname k8s-master

例証します:

  • ビューの確認

    ping k8s-master
    

    ここに画像の説明を挿入します

  • ネットワーク内のホスト名に ping を実行することで、ping を実行できます。

  • hostnamectl set-hostname xxxホスト名を設定するコマンドです。

補充:

ホスト名はネットワーク上のコンピュータを識別する名前であり、さまざまなデバイスやノードを識別して区別するために使用されます。正しいホスト名を設定することは、ネットワーク管理、システム識別、および通信にとって重要です。

1.2ノードノード名を設定する

hostnamectl set-hostname node1

例証します:

  • ビューの確認

    ここに画像の説明を挿入します

  • ネットワーク内のホスト名に ping を実行することで、ping を実行できます。

補充:

各動作ノードのネットワーク名をノード 1 に設定します。他の動作ノードがある場合は、名前をノード 2、ノード 3... に追加できます。これは規則的で管理が簡単です。

2. 各ノードでホスト名と IP のマッピング関係を設定します。

2.1 マスターホストIPの表示

ip a

例証します:

ここに画像の説明を挿入します

知らせ:

通信を確立するには、各マスター ノードとワーカー ノードが同じネットワーク セグメント上にある必要があることをもう一度思い出してください。

2.2 ホスト名とIP間のマッピング関係を追加する

echo "10.13.167.102  k8s-master" >> /etc/hosts

例証します:

  • この操作は、マスター ノードとワーカー ノードを含むすべてのノードで実行する必要があります。LAN 内のホストがホスト名を介して相互に直接通信できるようにする

  • 検証: 動作中のノード上のホスト名に ping を実行すると、相互に通信できます。

    ここに画像の説明を挿入します

  • 本設定はマスタノードとワークノードの両方で実施する必要があります。

補充:

/etc/hosts は、ホスト名と IP アドレス間のマッピング関係を含むシステム ファイルです。

3. マスターノードを初期化する

kubeadm init \
--apiserver-advertise-address=10.13.167.102 \
--control-plane-endpoint=k8s-master \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=1.22.12 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=192.168.0.0/16 \
--ignore-preflight-errors=ALL

知らせ:

  • マスター ノード IP、サービス CIDR、およびポッド ネットワーク CIDR の IP アドレス セグメントを指定します。繰り返すことはできません。そうしないと、IP アドレスの競合が発生する可能性があります。
  • パラメータを変更する必要があるノード アドレスは--apiserver-advertise-addressマスター ノード アドレスであることに注意してください。

説明: パラメータの説明

  • --apiserver-advertise-address=10.13.166.254: マスターノード上の Kubernetes API サーバーが使用する IP アドレスを指定します。このアドレスはクラスター内の他のノードにアドバタイズされ、API サーバーと通信できるようになります。
  • --control-plane-endpoint=k8s-master: コントロール プレーンのエンドポイント名、つまりマスター ノードの名前を指定します。この名前は、他のノードがマスター ノードに接続するために使用するコントロール プレーンのサービス アドレスを形成するために使用されます。
  • --image-repository registry.aliyuncs.com/google_containers: コンテナ イメージのウェアハウス アドレスを指定します。ここでは、デフォルトの公式 Web サイト k8s.grc.io を使用する代わりに、Alibaba Cloud のイメージ ウェアハウス アドレスを使用して、必要なイメージをダウンロードします。
  • --kubernetes-version v1.20.0: Kubernetes バージョンを v1.20.0 として指定します。
  • --service-cidr=10.1.0.0/16: Kubernetes サービスの IP アドレス範囲、つまりサービス CIDR を指定します。このアドレス セグメントは、サービス IP やクラスター IP などの Kubernetes サービスに割り当てるために使用されます。
  • --pod-network-cidr=172.168.0.0/16: ポッド ネットワークの IP アドレス セグメント、つまりポッド ネットワーク CIDR を指定します。このアドレスセグメントは、Pod ネットワークへの割り当て、つまりコンテナ間の通信に使用されます。

説明: 結果

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:

  kubeadm join k8s-master:6443 --token 2tcfgf.lccq14bz1ysql7fu \
    --discovery-token-ca-cert-hash sha256:9a3f30056dc2e12a52d8bc71fdc07d1204c40503223d657708ae184b963934f4 \
    --control-plane 

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join k8s-master:6443 --token 2tcfgf.lccq14bz1ysql7fu \
    --discovery-token-ca-cert-hash sha256:9a3f30056dc2e12a52d8bc71fdc07d1204c40503223d657708ae184b963934f4 
  • マスター ノードがクラスター操作を初期化し、ワーカー ノードがクラスターに参加できるようにするための重要な情報を記録します。

補足: 初期化のキャンセル (マスターの初期化操作をキャンセルする必要がある場合、この手順はオプションです)

sudo kubeadm reset                   # 重置 Kubernetes 集群,清除所有相关配置和数据
rm -rf $HOME/.kube                  # 删除当前用户的 .kube 目录,其中存储了 Kubernetes 相关的配置文件
rm -rf /var/lib/cni/                # 删除 CNI 插件的数据目录
rm -rf /etc/cni/                    # 删除 CNI 插件的配置目录
ifconfig cni0 down                  # 关闭 cni0 网络接口
ip link delete cni0                 # 删除 cni0 网络接口
  • CNI は、Kubernetes のコンテナ ネットワーク管理用の標準化されたインターフェイスです

4. マスターノードの Kubectl 環境をセットアップする

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

例証します:

KUBECONFIG環境変数の値をに設定する/etc/kubernetes/admin.confと、コマンドを使用するときに構成ファイルのパスの指定が簡素化され、kubectlターミナルでコマンドを直接実行することがkubectlより便利かつ簡潔になります。

5. マスターノードネットワークプラグインをインストールする

5.1 ネットワークプラグインのダウンロード

curl -O https://docs.tigera.io/archive/v3.22/manifests/calico.yaml
curl -O https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

5.2 ネットワークプラグインのIPを変更する(以下のアドレスの場合はデフォルトなので変更する必要はありません)

            - name: CALICO_IPV4POOL_CIDR
              value: "192.168.0.0/16"

例証します:

ここに画像の説明を挿入します

  • を変更しますCALICO_IPV4POOL_CIDR。各ポッド間の通信を確保するために、ここでの IP はポッドの IP アドレス セグメントと同じである必要があります。

5.4 ネットワークプラグインのダウンロード元を変更する

sed -i 's#docker.io/##g' calico.yaml

例証します:

  • ネットワーク プラグインのダウンロード ミラー ソースを表示する

    cat kube-flannel.yaml |grep 'image:'
    

    ここに画像の説明を挿入します

5.3 k8s に calico プラグインをインストールする

kubectl apply -f calico.yaml

例証します:

  • マスターノード内のすべてのポッドノードのステータスを表示する

    kubectl get pod -A
    

ここに画像の説明を挿入します

  • ポッドの詳細ログを表示する

    kubectl describe pod calico-node-6rwsp  -n kube-system
    

補充:

  • calico プラグインを削除する

    kubectl delete -f kube-flannel.yaml
    

補充:

Calico ネットワーク プラグインの構成ファイル calico.yaml をダウンロードし、その中で定義されているリソースを Kubernetes クラスターに適用します。このようにして、Calico ネットワーク プラグインはクラスター内に展開および構成され、ネットワーク ポリシー、ルーティング、IP アドレス割り当てなどのネットワーク機能を提供します。

ステップ 4: Kubernetes を削除する

1. 関連サービスを停止する

systemctl stop kubelet

systemctl stop etcd

systemctl stop docker

2. k8sをアンインストールする

kubeadm reset -f

3. k8s関連ディレクトリを削除する

modprobe -r ipip

lsmod

rm -rf ~/.kube/

rm -rf /etc/kubernetes/

rm -rf /etc/systemd/system/kubelet.service.d

rm -rf /etc/systemd/system/kubelet.service

rm -rf /usr/bin/kube*

rm -rf /etc/cni

rm -rf /opt/cni

rm -rf /var/lib/etcd

rm -rf /var/etcd

4. k8s関連プログラムをアンインストールする

yum remove kubeadm kubelet
yum erase -y kubelet kubectl kubeadm kubernetes-cni
yum -y remove kube*

5. イメージを更新する

yum clean all

yum -y update

yum makecache

参考文献

k8s 公式 Web サイト: Kubernetes ドキュメント | Kubernetes

KubeSphere公式サイト:製品紹介(kubesphere.io)

追加の材料

ドッカーCE

「docker-ce」とはDocker Community Editionの略で、Docker Community Editionを意味します。

Docker は、開発者がアプリケーションとそのすべての依存関係をポータブル コンテナにパッケージ化し、Docker をサポートする任意の環境で実行できるようにするオープン ソースのコンテナ化プラットフォームです。Docker Community Edition は、個人および小規模チーム向けの Docker の無料公開リリースです。

Docker Community Edition は、Docker Engine (コンテナーの作成と管理用)、Docker Compose (複数のコンテナーでアプリケーションの定義と管理用)、Docker Swarm (複数のホストの実行用) を含むツールと機能の完全なセットを提供します。サーバー)など 開発者とオペレーターに、アプリケーションの開発、テスト、展開を容易にする、シンプルで効率的でポータブルなコンテナ化ソリューションを提供します。

なお、Docker Community Edition には、エンタープライズ レベルのユーザー向けの上級バージョンで、よりエンタープライズ レベルの機能とサポート サービスを提供する Enterprise Edition (Docker Enterprise Edition) もあります。

ログ

コンテナの作成に失敗しました

Warning  FailedCreatePodContainer  3s (x9 over 107s)  kubelet            
unable to ensure pod container exists: failed to create container for
[kubepods burstable podeb31145b-1718-4258-8eed-4c1af8f3e04b] :
mkdir /sys/fs/cgroup/memory/kubepods/burstable/podeb31145b-1718-4258-8eed-4c1af8f3e04b:
cannot allocate memory

例証します:

ホストメモリを増やす

おすすめ

転載: blog.csdn.net/D_boj/article/details/131290863