Kubernetesを素早く導入する方法

Kubernetesを素早く導入する方法

Kubernetes とは何ですか?

Kubernetes という単語はギリシャ語に由来し、操舵手または航海士を意味します。 Kubernetes は K8S とも呼ばれ、中央の 8 は「ubernete」を表す 8 文字です。

公式サイトでは次のように説明されています: プロダクションレベルのコンテナ オーケストレーション システムは、コンテナ化されたアプリケーションを自動的にデプロイ、スケーリング、管理するためのオープン ソース システムです。 (整列:ある目的に応じて順番に並べる、割り当てて配置する)。

K8S は CNCF 卒業プロジェクトです。もともと、Kubernetes は Google の社内プロジェクトでした。その後、オープンソース化され、その後、急速な成長を遂げるために Cloud Native Computing Foundation (CNCF) に寄贈されました。

github を見ると、Kubernetes は Go 言語を使用して開発されていることがわかります。 Go (Golang とも呼ばれる) は、Google が開発した、静的に強く型付けされ、コンパイルされ、並行処理され、ガベージ コレクションされるプログラミング言語です。

Kubernetes アーキテクチャ図

マスター(コントロールプレーンによって制御されるシステム)

k8s クラスター制御ノードは、クラスターのスケジュールと管理を行い、クラスター外部のユーザーからのクラスター操作要求を受け入れます。

マスター ノードは、API サーバー、スケジューラ、ClusterState ストア (ETCD データベース)、およびコントローラー MangerServer で構成されます。

ノード(データ)

クラスターの作業ノードはユーザーのビジネス アプリケーション コンテナーを実行します。

ノードはワーカーノードとも呼ばれ、kubelet、kube proxy、Pod (コンテナ ランタイム) が含まれます。

Kubernetes環境の構築方法

Kubernetes 環境 (クラスター) をデプロイする方法はいくつかあります。

  • kubeadm: Kubeadm は、Kubernetes クラスターを迅速にデプロイできる kubeadm init と kubeadm join の 2 つの操作コマンドを提供する K8s デプロイ ツールです。
  • minikube: minikube は、Kubernetes をローカルで実行できるツールです。 minikube を使用すると、パーソナル コンピューター (Windows、macOS、Linux PC を含む) 上で単一ノードの Kubernetes クラスターを実行できるため、Kubernetes を試用したり、日常の開発作業を行ったりすることができます。
  • バイナリ パッケージ方式: Github からディストリビューションのバイナリ パッケージをダウンロードし、各コンポーネントを手動でデプロイおよびインストールして Kubernetes クラスターを形成します。手順はより面倒ですが、各コンポーネントをより明確に理解できるようになります。
  • Yum インストール方法: yum を使用して Kubernetes の各コンポーネントをインストールし、Kubernetes クラスターを形成します。ただし、yum ソース内の k8s バージョンは比較的古いです。
  • サードパーティ ツール: 専門家がパッケージ化したツールを使用して k8s 環境をインストールします。
  • もう1つは、一部のクラウドサービス企業が提供するパブリッククラウドプラットフォームk8sです。

Kubeadm で Kubernetes をデプロイする

この記事では、概略的な展開の説明として、上記の最初の方法を紹介します。

kubeadm は、Kubernetes クラスターを迅速にデプロイするために公式コミュニティによってリリースされたツールです。このツールは、次の 2 つの手順で Kubernetes クラスターのデプロイを完了できます。

マスターノードを作成します。

 kubeadm の初期化

ノード ノードをマスター クラスターに追加します。

 $ kubeadm join < マスターノードのIP とポート>

Kubernetes デプロイメント環境の要件

  • 1 台以上のマシン、オペレーティング システム CentOS 7.x-86_x64
  • ハードウェア構成: メモリ 2GB 以上、CPU 2 コア以上。
  • クラスター内のマシンは相互に通信できます (必須)。
  • クラスター内の各マシンは外部ネットワークにアクセスでき、イメージをプルする必要があります (オプション、必要なファイル パッケージを手動でダウンロードすることもできます)。
  • スワップパーティションを無効にします。

Kubernetes 導入環境の準備

ファイアウォールをオフにします。

 systemctl 停止ファイアウォール
systemctl ファイアウォールを無効にする

selinuxをオフにします:

 sed - i 's/enforcing/disabled/' / etc / selinux / config #permanent
setenforce 0 #一時

スワップをオフにします (k8s はパフォーマンスを向上させるために仮想メモリを無効にします):

 sed -ri 's/.*swap.*/#&/' / etc / fstab # 永続的
swapoff - # 一時的な

マスターにホストを追加します (IP アドレスは独自の事前設定に基づきます)。

 cat >> /etc/ ホスト<< EOF 192.168 .52 .100 k8smaster 192.168 .52 .101 k8snode EOF

ブリッジパラメータを設定します。

 cat > /etc/ sysctld / k8sconf << EOF ネット. ブリッジ-nf - call - ip6tables = 1 ネット ブリッジ- nf - 呼び出し- iptables = 1 EOF
sysctl -- システム#有効にする

時間同期:

 yum インストールntpdate -y
ntpdate 時間ウィンドウズcom

Kubernetesのインストール手順

すべてのサーバー ノードに Docker、kubeadm、kubelet、kubectl をインストールします。 Kubernetes のデフォルトのコンテナ ランタイム環境は Docker なので、まず Docker をインストールする必要があります。

(1)Dockerをインストールする

Docker の yum ソースを更新します。

 yum インストールwget -y
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo を実行します。

指定されたバージョンの Docker をインストールします (最新バージョン番号 xxxx を自分で置き換えてください)。

 yum install docker -ce -x 実行します バツバツx - y

ダウンロードを高速化するためにアクセラレータを設定します。

 /etc/docker/daemon.json
{

「レジストリミラー」 : [ "https://cr.console.aliyun.com/" ]
}

その後実行します。そうしないと警告が表示されます。

 systemctl でdocker .service を有効にする

(2)次に、kubeadm、kubelet、kubectlをビルドし、k8sのAlibaba Cloud YUMソースを追加します。

 cat > /etc/yumリポジトリd / kubernetesリポジトリ<< EOF [ 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

(3)kubeadm、kubelet、kubectlをインストールする

 yum インストールkubelet - 1.24.1 kubeadm - 1.24.1 kubectl - 1.24.1 - y

その後実行します。そうしないと警告が表示されます。

 systemctl kubelet .service を有効にする

インストールされているかどうかを確認します:

 yum リストがインストールされました| grep kubelet
yum リストがインストールされました| grep kubeadm
yum リストがインストールされました| grep kubectl

インストールされているバージョンを確認します:

 kubelet –バージョン
  • Kubelet: クラスター内のすべてのノードで実行され、POD とコンテナの起動を担当します。
  • Kubeadm: クラスターを初期化するためのツール。
  • Kubectl: kubectl は kubenetes コマンドライン ツールです。 kubectl を使用すると、アプリケーションをデプロイおよび管理したり、さまざまなリソースを表示したり、コンポーネントを作成、削除、更新したりできます。

この時点で、システムを再起動する必要があります (centos)。

(4)Kubernetesマスターノードをデプロイする(このコマンドはマスターマシン上で実行される)

 kubeadm init -- apiserver - advertise - address = 192.168 .52 .100 -- イメージリポジトリレジストリ アリユンクスcom / google_containers -- kubernetes - バージョンv1 .24 .1 -- サービス- cidr = 10.96 .0 .0 / 12 -- ポッド- ネットワーク- cidr = 10.244 .0 .0 / 16

補足: service-cidr の選択は、PodCIDR およびローカル ネットワークと重複または競合することはできません。通常は、ローカル ネットワークと PodCIDR で使用されていないプライベート ネットワーク アドレス セグメントを選択できます。たとえば、PODCIDR が 10.244.0.0/16 を使用する場合、ネットワークに重複や競合がない限り、service-cidr は 10.96.0.0/12 を選択できます。

次に、マスター マシンで実行します。

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

kubectl ノードを取得する

次に、ノードを Kubernetes マスターに追加し、ノード マシン上で実行します。

クラスターに新しいノードを追加するには、kubeadm init によって出力される kubeadm join コマンドを実行します (以下を参照)。

 kubeadm join 192.168.52.101: ポート番号--token wa5bif.zfuvbesevdfvf4of \
-- 検出- トークン- CA - 証明書- ハッシュsha256 : 87 cf5828d54dd80da13c4b57c57360370ea0267a7cc3991989ca3006cf3e44d8

ネットワークプラグインを展開する

kube-flannel.yml ファイルをダウンロードします (flannel は k8s クラスターの一般的なネットワーク コンポーネントです。github から yml ファイルを取得することをお勧めします)

 https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ​ にアクセスします。

kube-flannel.yml ファイルを適用してランタイム コンテナを取得します。

kubectl apply -f kube-flannel.yml (マスターマシンで実行):


次に、ノードのステータスを確認します: kubectl get nodes (マスター マシンで実行)。 STATUS:Ready が表示されたら、k8s 環境が構築されたことを意味します。

ランタイム コンテナ ポッドを表示します (1 つのポッドで複数の Docker コンテナが実行されています)

 kubectl ポッドの取得- n kube - システム

上記は、Kubeadm​ を使用して Kubernetes を簡単にデプロイするプロセスです。事前にマシン、環境、インストールパッケージなどを準備する必要があります。このプロセスには慎重な操作が必要です。一部のコンポーネントとパッケージを wget 経由で正常にダウンロードできない場合は、手動でダウンロードすることをお勧めします。

<<:  クラウドネイティブに基づくFlinkコンピューティングプラットフォームの実践

>>:  コンテナクラウドドッキングと永続ストレージの使用

推薦する

電子商取引は今後どのように発展していくのでしょうか?高度なコスト構造をマスターした者が勝利する

張暁偉、マイマイバオCEO現在の電子商取引業界の戦火は収まるどころか、多くのプレーヤーによる電子商取...

justhost: ノボシビルスク VPS、200Mbps、無制限トラフィック、月額 11 元から

justhost は、ロシアの DataLine と Rostelecom の 2 つのデータセンタ...

ブランドマーケティングプロモーション: HEYTEA はどのようにしてブランドを構築しているのでしょうか?

企業の事業運営の核となる結果は顧客の心の中にあり、顧客の選択に影響を与えます。この核となる結果がブラ...

WeChatエンタープライズアカウントはモバイルB2Bプラットフォームを構築します

最近、WeChat公式アカウントが公開テストを開始しました。「万能のWeChat」が企業向けソフトウ...

仮想化について語る - カーネルとIO

[[211645]]序文時間は流れる水のように、あっという間に過ぎていきます。自分が仮想環境にいるの...

トレンドを活用して中秋節のホットなマーケティング キャンペーンを作成する 5 つのヒント

月収10万元の起業の夢を実現するミニプログラム起業支援プラン出典 | Activity Box-AP...

Instapaperが期間限定で無料になる理由

今日、これまで「期間限定無料」だったInstapaperが突然無料になりました。この古いオフライン読...

2020 年クラウド コンピューティングの現状レポート: クラウドの導入とテクノロジーのトレンド

Flexera が発表した年次調査は、クラウド コンピューティング市場で最も期待されている調査レポー...

SEO初心者は外部リンクの罠に注意する必要がある

今日の話題も決まり文句で、多くの友人が見たことがあるかもしれませんが、それでも詳細に話し、SEO初心...

SEO に関する 4 つのよくある誤解の分析 (パート 3)

最初の 2 つの章では、SEO に関する 4 つのよくある誤解を紹介しました。具体的なアドレスは、h...

ixwebhosting-$1.94/無料com/独立IP/Cpanelパネル/無制限のウェブサイト構築/Alipayサポート

最近、VPS やサーバーに関する情報があまりないことに気づいたので、仮想ホストの割引やプロモーション...

Docker イメージに基づいて Dockerfile をリバース エンジニアリングする方法

導入使用したい Docker イメージを見つけたものの、特定のニーズに合わせて変更できなかったことは...

ソフト記事マーケティング:みんなが読んでくれると本当にいい

ソフトコンテンツマーケティングはオンラインプロモーションの最重要課題と言えます。しかし、ソフトな記事...

外部リンク構築において見落とされがちな誤解をいくつか紹介します

外部リンクを構築する方法は、フォーラム、知道、百科事典、ソフト記事、外部リンクや友好リンクの購入など...