この記事は、Jiang Wanzhengchouyu によるHuawei Cloud Community「OpenEuler Deploys Kubernetes 1.29.4 Version Cluster 」から共有されたものです。
1. Kubernetes クラスターノードの準備
1.1 ホスト オペレーティング システムの説明
シリアル番号 オペレーティング システムとバージョン 備考
1 CentOS7u9 または OpenEuler2203
1.2 ホストのハードウェア構成の説明
要件 CPU メモリ ハードディスクの役割 ホスト名
値 8C 8G 1024GB マスター k8s-master01
値 8C 16G 1024GB ワーカー (ノード) k8s-worker01
値 8C 16G 1024GB ワーカー (ノード) k8s-worker02
1.3 ホスト構成
1.3.1 ホスト名の設定
今回は 3 つのホストを使用して kubernetes クラスターのデプロイメントを完了するため、そのうちの 1 つは k8s-master01 という名前のマスター ノードであり、そのうちの 2 つは k8s-worker01 と k8s-worker02 という名前のワーカー ノードです。
# マスターノード hostnamectl set-ホスト名 k8s-master01 #worker01node hostnamectl set-ホスト名 k8s-worker01 #worker02node hostnamectl set-ホスト名 k8s-worker02
1.3.2 IP アドレス、名前解決、および相互信頼
#IP 構成についてはここでは説明しません。 #以下は名前解決の設定です [root@k8s-master01 ~]# cat /etc/hosts 127.0.0.1 ローカルホスト ローカルホスト.ローカルドメイン ローカルホスト4 ローカルホスト4.ローカルドメイン4 ::1 ローカルホスト ローカルホスト.ローカルドメイン ローカルホスト6 ローカルホスト6.ローカルドメイン6 192.168.0.11 k8s-master01 192.168.0.12 k8s-worker01 192.168.0.13 k8s-worker02 #ホスト相互信頼構成 [root@k8s-master01 ~]# ssh-keygen 公開/秘密 RSA キーのペアを生成しています。 キーを保存するファイルを入力してください (/root/.ssh/id_rsa): パスフレーズを入力してください (パスフレーズがない場合は空です): 同じパスフレーズを再度入力します。 あなたの ID は /root/.ssh/id_rsa に保存されています 公開キーは /root/.ssh/id_rsa.pub に保存されました キーのフィンガープリントは次のとおりです。 SHA256:Rr6W4rdnY350fzMeszeWFR/jUJt0VOZ3yZECp5VJJQA root@k8s-master01 キーのランダムアート イメージは次のとおりです。 +---[RSA 3072]----+ | E.o+=++*| | ++o*+| | 。 。 +oB| |お。 *o| | S o =| | 。お。 ..o| | 。 + . 。 +o| | 。ああ。 = 。 *B| | ...*.またははい*| +-----[SHA256]-----+ [root@k8s-master01 ~]# for i in {11..13};do ssh-copy-id 192.168.0.${i};done /usr/bin/ssh-copy-id: 情報: インストールされるキーのソース: "/root/.ssh/id_rsa.pub" ホスト「192.168.0.11 (192.168.0.11)」の信頼性を確立できません。 ED25519 キーのフィンガープリントは SHA256:s2R582xDIla4wyNozHa/HEmRR7LOU4WAciEcAw57U/Q です。 このキーは他の名前では知られていません 接続を続行してもよろしいですか (はい/いいえ/[指紋])?はい /usr/bin/ssh-copy-id: 情報: すでにインストールされているキーを除外するために、新しいキーを使用してログインしようとしています /usr/bin/ssh-copy-id: 情報: インストールされるキーが 1 つ残っています -- プロンプトが表示された場合は、新しいキーをインストールするよう求められます 許可されたユーザーのみ。すべての活動が監視され、報告される場合があります。 [email protected] のパスワード: 追加されたキーの数: 1
1.3.4 ファイアウォールの設定
すべてのホストで操作が必要です。
既存のファイアウォールをオフにする
# systemctl ファイアウォールを無効にする # systemctl ファイアウォールを停止します
または
systemctl を無効にする --now firewalld
ファイアウォールのステータスを表示する
# ファイアウォール-cmd --state 走っていない
参照実行コマンド:
[root@k8s-master01 ~]# for i in {11..13};do ssh 192.168.0.${i} 'systemctl disable --now firewalld' ;done 許可されたユーザーのみ。すべての活動が監視され、報告される場合があります。 許可されたユーザーのみ。すべての活動が監視され、報告される場合があります。 許可されたユーザーのみ。すべての活動が監視され、報告される場合があります。 [root@k8s-master01 ~]# for i in {11..13};do ssh 192.168.0.${i} 'firewall-cmd --state' ;done 許可されたユーザーのみ。すべての活動が監視され、報告される場合があります。 走っていない 許可されたユーザーのみ。すべての活動が監視され、報告される場合があります。 走っていない 許可されたユーザーのみ。すべての活動が監視され、報告される場合があります。 走っていない
1.3.5 SELINUX の構成
すべてのホストで操作が必要です。 SELinux 構成を変更するには、オペレーティング システムを再起動する必要があります。
# sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# ステータス
参照実行コマンド:
[root@k8s-master01 ~]# for i in {11..13};do ssh 192.168.0.${i} 'sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/設定' ;完了 許可されたユーザーのみ。すべての活動が監視され、報告される場合があります。 許可されたユーザーのみ。すべての活動が監視され、報告される場合があります。 許可されたユーザーのみ。すべての活動が監視され、報告される場合があります。 [root@k8s-master01 ~]# for i in {11..13};do ssh 192.168.0.${i} 'sestatus' ;done 許可されたユーザーのみ。すべての活動が監視され、報告される場合があります。 SELinux ステータス: 無効 許可されたユーザーのみ。すべての活動が監視され、報告される場合があります。 SELinux ステータス: 無効 許可されたユーザーのみ。すべての活動が監視され、報告される場合があります。 SELinux ステータス: 無効
1.3.6 時刻同期の設定
すべてのホストで操作が必要です。最小限のインストール システムでは、ntpdate ソフトウェアのインストールが必要です。
# crontab -l 0 */1 * * * /usr/sbin/ntpdate time1.aliyun.com for i in {11..13};do ssh 192.168.0.${i} ' echo '0 */1 * * * /usr/sbin/ntpdate time1.aliyun.com' >> /etc/crontab' ;終わり #上海のタイムゾーンを設定、東8区 timedatectl set-timezone アジア/上海 for i in {11..13};do ssh 192.168.0.${i} ' timedatectl set-timezone Asia/Shanghai' ;done
1.3.7 オペレーティング システム カーネルのアップグレード
centos システムはコンテンツをアップグレードする必要があります。特に、Baidu と OpenEuler2203 はアップグレードする必要はありません。
1.3.8 カーネルルーティング転送とブリッジフィルタリングの構成
すべてのホストで操作が必要です。
ブリッジフィルタリングとカーネル転送構成ファイルを追加する
sed -i 's/net.ipv4.ip_forward=0/net.ipv4.ip_forward=1/g' /etc/sysctl.conf # cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 vm.swappiness = 0 終了後 #br_netfilter モジュールを設定してロードする 猫 <<EOF | sudo tee /etc/modules-load.d/k8s.conf かぶせる br_ネットフィルター 終了後 #br_netfilter オーバーレイ モジュールをロードする modprobe br_netfilter modprobeオーバーレイ #ロードされているか確認する #lsmod | grep br_netfilter br_ネットフィルター 22256 0 ブリッジ 151336 1 br_netfilter #効果的なものにする sysctl --システム # デフォルトの設定ファイルを使用して有効にします sysctl -p # 新しく追加した設定ファイルを使用して有効にします sysctl -p /etc/sysctl.d/k8s.conf
1.3.9 ipset と ipvsadm のインストール
すべてのホストで操作が必要です。
ipset と ipvsadm をインストールする # yum -y ipset ipvsadm をインストールします ipvsadm モジュールのロード方法を設定する ロードする必要があるモジュールを追加する # cat > /etc/sysconfig/modules/ipvs.modules <<EOF #!/bin/bash modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack 終了後 承認、実行、ロードされているかどうかの確認 chmod 755 /etc/sysconfig/modules/ipvs.module && /etc/sysconfig/modules/ipvs.module 対応するモジュールが正常にロードされているかどうかを確認します #lsmod | grep -e ip_vs -e nf_conntrack_ipv4
1.3.10 SWAP パーティションを閉じる
変更が完了したら、オペレーティング システムを再起動する必要があります。再起動しない場合は、コマンド swapoff -a を使用して一時的にシャットダウンできます。
スワップ パーティションを完全に閉じるため、オペレーティング システムを再起動する必要があります。
#猫/etc/fstab …… # /dev/mapper/centos-swap スワップ スワップのデフォルト 0 0 前の行の先頭に # を追加します
2.containerdコンテナ環境のインストール
2.1containerd環境パッケージをインストールする
すべてのホストで操作が必要です。
#パックされたファイル for i in {11..13};do ssh 192.168.0.${i} ' wget https://blog-source-mkt.oss-cn-chengdu.aliyuncs.com/resources/k8s/kubeadm%20init/ k8s1.29.tar.gz';終わり #containerdを解凍してインストールします for i in {11..13};do ssh 192.168.0.${i} ' tar -zxvf /root/k8s1.29.tar.gz';終わり for i in {11..13};do ssh 192.168.0.${i} ' tar -zxvf /root/workdir/containerd-1.7.11-linux-amd64.tar.gz && mv /root/bin/* /usr/local/bin/ && rm -rf /root/bin';終わり # サービスを作成します。すべてのホストが動作する必要があります cat << EOF > /usr/lib/systemd/system/containerd.service [ユニット] 説明=containerd コンテナ ランタイム ドキュメント=https://containerd.io After=network.target local-fs.target [サービス] ExecStartPre=-/sbin/modprobe オーバーレイ ExecStart=/usr/local/bin/containerd タイプ=通知 代理人=はい KillMode=プロセス 再起動 = 常に 再起動秒=5 # ゼロ以外の Limit* を使用すると、アカウンティングのオーバーヘッドによりパフォーマンスの問題が発生します # カーネル内で。コンテナーローカルのアカウンティングを行うには、cgroups を使用することをお勧めします。 LimitNPROC=無限大 LimitCORE=無限大 # systemd バージョンがサポートしていない場合は、TasksMax にコメントします。 # systemd 226 以降のみがこのバージョンをサポートします。 タスク最大=無限大 OOMScoreAdjust=-999 [インストール] WantedBy=マルチユーザー.ターゲット 終了後 # コンテナサービスを開始する for i in {11..13};do ssh 192.168.0.${i} 'systemctl daemon-reload && systemctl Enable --nowcontainerd ';終わり # runc をインストールする for i in {11..13};do ssh 192.168.0.${i} 'install -m 755 /root/workdir/runc.amd64 /usr/local/sbin/runc ';終わり #cniプラグインをインストールする for i in {11..13};do ssh 192.168.0.${i} 'mkdir -p /opt/cni/bin && tar -xzvf /root/workdir/cni-plugins-linux-amd64-v1.4.0 .tgz -C /opt/cni/bin/ ';終わり # コンテナ設定ファイルを生成して変更する for i in {11..13};do ssh 192.168.0.${i} 'mkdir -p /etc/containerd && コンテナー構成のデフォルト | sudo tee /etc/containerd/config.toml ';終わり # サンドボックス イメージを変更します。すべてのホストが動作する必要があります sed -i 's#sandbox_image = "registry.k8s.io/pause:.*"#sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"#' /etc/containerd/config.toml #containerd を再起動します systemctlはcontainerdを再起動します
2.2 マスターホストに k8s をインストールする
# k8s v2.19 ソースを構成します。すべてのノードがインストールされている必要があります 猫 <<EOF | /etc/yum.repos.d/kubernetes.repo [Kubernetes] 名前=Kubernetes Baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/ 有効=1 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/repodata/repomd.xml.key 終了後 #k8s ツールをインストールします。すべてのノードがインストールされている必要があります yum clean all && yum makecache yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes # kubelet の設定 docker が使用する cgroupdriver と kubelet が使用する cgroup の間の一貫性を達成するために、次のファイルの内容を変更することをお勧めします。すべてのノードをインストールする必要があります # vim /etc/sysconfig/kubelet KUBELET_EXTRA_ARGS="--cgroup-driver=systemd" または次のコマンド echo 'KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"' > /etc/sysconfig/kubelet systemctl で kubelet を有効にする #注意: kubelet は起動しないでください。kubeadm が自動的に起動すると、インストールでエラーが報告されます。 # k8s コマンドをマスターノードにインストールして実行します。ここにはバージョン 1.29.4 のイメージのみがあります。 kubeadm init --apiserver-advertise-address=192.168.0.11 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.29.4 --service-cidr=10.96.0.0/12 --pod-network- cidr=10.224.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 KUBECONFIG=/etc/kubernetes/admin.conf をエクスポートします
2.3 calico ネットワークプラグインのインストール
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml #最後にノードとポッドブランチのステータスを確認する kubectl ノードを取得する kubectl ポッドを取得 -A
クリックしてフォローし、できるだけ早くHuawei Cloudの新しいテクノロジーについて学びましょう~
ライナスは、カーネル開発者がタブをスペースに置き換えるのを防ぐことに自ら取り組みました。 彼の父親はコードを書くことができる数少ないリーダーの 1 人であり、次男はオープンソース テクノロジー部門のディレクターであり、末息子はオープンソース コアです。寄稿者Robin Li: 自然言語 は 新しいユニバーサル プログラミング言語になるでしょう。オープン ソース モデルは Huawei にますます後れをとっていきます 。一般的に使用されている 5,000 のモバイル アプリケーションを Honmeng に完全に移行するには 1 年かかります。 リッチテキスト エディタ Quill 2.0 が リリースされ、機能、信頼性、開発者は「恨みを取り除く 」 ために握手を交わしました。 Laoxiangji のソースはコードではありませんが、その背後にある理由は非常に心温まるものです。Googleは大規模な組織再編を発表しました。