Kubernetes 1.29.4 バージョン クラスターの openEuler デプロイメントの実践的なデモンストレーション

この記事は、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は大規模な組織再編を発表しました。
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/4526289/blog/11053977