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コンピューティングプラットフォームの実践

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

推薦する

bluevm-新しいパネル

bluevm が利用可能になりました。ご興味があればぜひチェックしてみてください。 bluevm は...

ウェブサイトにスナップショットがないのに内部ページが含まれている4つの理由の簡単な分析

ウェブサイトのスナップショットは、ウェブマスターがウェブサイトが検索エンジンに優しいかどうかを判断す...

企業ブランドを宣伝する方法 Wenfang Mediaがソフトコピーマーケティングを教えます

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますソフト記事...

bluevm - 強力な構成サーバー - 特別価格!

Bluevm は、ほぼ 2 か月間、誰の実装からも消え去っています。512M メモリの KVM VP...

ブラックフライデーと独身の日:中国とアメリカの電子商取引の類似点と相違点

ジャック・マー氏はダブル11を中国版ブラックフライデーにしたいと語った。この2つをどう比較すればいい...

クッキーが SEO ランキングに影響を与えるのはなぜですか?

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますクッキーが...

48時間以内に百度のトップ3に入るメカニズムについての個人的な分析

A5にもそのような広告があり、ウェブマスターステーションにもそのような広告があります。他の人が広告を...

インタラクティブマーケティング:本当の効率性は、小さなものを使って大きな成果を達成することです

今日のソーシャルおよびモバイル インターネット マーケティングでは、さまざまな情報とリソースがさまざ...

国家ドメイン名セキュリティ活動を促進するために国家ドメイン名セキュリティアライアンスが設立されました

3月27日、工業情報化部通信安全局を指導機関とし、中国インターネットネットワーク情報センター(CNN...

アプリプロモーション:オフラインチャネルプロモーション方法11選!

オフラインプロモーションは、ウェブサイトへの直接トラフィックを増やすだけでなく、企業ブランドを宣伝す...

クラウドネイティブ Docker デプロイメント Flask 実践

1. Dockerの理解1. Dockerの簡単な紹介Docker はオープンソースのアプリケーシ...

evoxt: 月額 2.99 ドルから利用できる日本向け VPS、512M メモリ/1 コア/5gSSD/250G トラフィック/1Gbps 帯域幅

Evoxtは本日、米国、英国、ドイツ、マレーシア、香港の既存データセンターに加え、日本の大阪にデータ...

SEOで見落とされがちないくつかの場所を明らかにする

SEO に関して言えば、多くの人が次の用語を思い浮かべるでしょう: 構築の初期段階における Web ...

Kubernetes をより良くする 11 個のツール

[51CTO.com クイック翻訳] 強力で大規模なものであっても、すべてのニーズを満たすことができ...

easyvmはどうですか?ラスベガスデータセンターのVPSの簡単なレビュー

Easyvm は、米国ネバダ州ラスベガス (米国西部の内陸部、海岸沿いではありません) で VPS ...