CentOS 7にKubeadmを使用してKubernetesをデプロイする

概観

この記事は、Kubernetesクラスターをkubeadmですぐに起動して実行できるようにすることを目的としています。このガイドでは、マスターとワーカーの2つのサーバーをデプロイしますが、必要な数だけサーバーをデプロイできます。

kubeadmとは何ですか?

Kubeadmは、Kubernetesによって開発されたツールであり、ベストプラクティスに従って、実行可能な最小限のクラスターを稼働させることができます。クラスターをブートストラップするだけで、マシンをプロビジョニングしません。アドオン、Kubernetesダッシュボード、モニタリングソリューションなどは、kubeadmが行うことではありません。

前提条件

展開するサーバーにはいくつかの要件があります。deb / rpm互換OSを実行している1つ以上のマシン。CentOSを使用します。

  • マシンごとに2 GB以上のRAM
  • マスターに2 CPU以上

クラスタ内のすべてのマシン間の完全なネットワーク接続

このガイドで展開されている2つのサーバーは次のとおりです。-CentOS 7を搭載した1 CPU 2GB RAM(ワーカーノード)-CentOS 7を搭載した2 CPU 4GB RAM(マスターノード)

両方のサーバーにこの量のRAMがある場合、Kubernetesには十分な余裕があります。

ワーカーとマスターの構成

マスターノードとワーカーノードの両方で実行する必要がある手順は次のとおりです。

  • Yumのアップデートとパッケージ
  • Dockerをインストールする
  • selinuxを無効にする
  • スワップを無効にする
  • ファイアウォールを無効にする
  • IPTablesを更新する
  • kubelet / kubeadm / kubectlをインストールする

Dockerのインストール

1.14このチュートリアルでは、Kubernetesのバージョンを使用します。このバージョンでは、KubernetesはDockerバージョンを実行することをお勧めし18.06.2ます。Kuberenetesのバージョンに対応する推奨Dockerバージョンを必ず確認してください

Dockerリポジトリをyumに追加し、特にをインストールし18.06.2ます。Dockerがインストールされたら、DockerデーモンをKubernetesが推奨する設定に構成する必要があります。

###Add yum-utils, if not installed already
yum install yum-utils

###Add Docker repository.
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

###Install Docker CE.
yum update && yum install docker-ce-18.06.2.ce

###Create /etc/docker directory.
mkdir /etc/docker

###Setup daemon.
cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}
EOF

mkdir -p /etc/systemd/system/docker.service.d

###Restart Docker
systemctl daemon-reload
systemctl enable docker.service
systemctl restart docker

SELinuxを無効にする

CentOSを使用しているため、SELinuxを無効にする必要があります。これは、コンテナがホストファイルシステムにアクセスできるようにするために必要です。

setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disable/' /etc/selinux/config

スワップを無効にする

kubeletが正しく機能するためには、スワップを無効にする必要があります。

sed -i '/swap/d' /etc/fstab
swapoff -a

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

KubernetesはIPTablesを使用してインバウンドおよびアウトバウンドトラフィックを処理します。問題を回避するために、firewalldを無効にします。

systemctl disable firewalld
systemctl stop firewalld

IPTablesを更新する

Kubernetes net.bridge.bridge-nf-call-iptablesは、必ず1に設定することをお勧めします。これは、iptablesをバイパスするためにREHL / CentOS 7でトラフィックが誤って再ルーティングされるという問題が原因です。

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

kubelet / kubeadm / kubectlをインストールする

yumにkubernetesリポジトリを追加する必要があります。これを実行したら、インストールコマンドを実行してkubeletを有効にするだけです。

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kube*
EOF

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet

これで、マスターノードとワーカーノードの両方が完全に構成されました。これでマスターノードを初期化して、ワーカーノードをマスターに参加させることができます。

ワーカーノードをさらに追加する場合は、上記のプロセスをすべてのノードで実行する必要があります。

マスターノードのセットアップ

次のコマンドを実行して、マスターノードを初期化します。以下のコマンドで、マスターノードのIPアドレスを置き換える必要があります。さらに、後でFlannelネットワークオーバーレイをインストールするときに簡単にするために、pod-network-cidrを渡します。

kubeadm init --apiserver-advertise-address=YOUR_IP_HERE --pod-network-cidr=10.244.0.0/16

これが完了するまでしばらく時間がかかる場合がありますが、完了すると、出力の最後に次のような同様のものが表示されます。

kubeadm join YOUR_IP:6443 --token 4if8c2.pbqh82zxcg8rswui \
--discovery-token-ca-cert-hash sha256:a0b2bb2b31bf7b06bb5058540f02724240fc9447b0e457e049e59d2ce19fcba2

このコマンドは、ワーカーノードがクラスターに参加するために実行する必要があるものなので、注意してください。

次はフランネルです。フランネルは、ポッド間の通信を可能にするものです。他にもさまざまなタイプのネットワークオーバーレイをインストールできますが、簡単にするために、このガイドではFlannelを使用します。

コマンドを実行できるように、kube/configファイルをにコピーします。$Homekubectl

mkdir $HOME/.kube
cp /etc/kubernetes/admin.conf $HOME/.kube/config

マスターノードでの最後のステップは、Flannelをインストールすることです。次のコマンドを実行します。

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

この設定をコピーするkubectl get csと、実行して応答を取得できるようになります。

NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok
controller-manager   Healthy   ok
etcd-0               Healthy   {"health":"true"}

マスターノードが設定され、準備が整いました。ワーカーノードに!

ワーカーノード

この時点では、ワーカーノードで必要な追加の作業はありません。出力kubeadm joinから取得したコマンドを実行するだけですkubeadm init

万が一kubeadm joinコマンドの場所を間違えた場合は、次のコマンドを実行して、マスターノードで別のコマンドを生成できます。 kubeadm token create --print-join-command

kubeadm joinコマンドを実行するとkubectl get nodes、マスターで実行すると、次のような出力が表示されます。

NAME          STATUS   ROLES    AGE    VERSION
k8-master   Ready    master   107m   v1.14.2
k8-worker   Ready    <none>   45m    v1.14.2

まとめ

同様に、kubeadmを使用してKubernetesクラスターをブートストラップしました。プライベートネットワークでもこれを行うことができます。Vultrおよび他のクラウドプロバイダーは、プライベートネットワークを許可します。また、ローカルマシンからクラスターに対してkubectlコマンドを実行する場合は、kubectlをローカルにインストール.kube/configし、クラスターからローカルマシンにファイルをプルダウンすることでこれを実現できます$HOME/.kube/config

うまくいけば、このガイドは、kubeadmをトラバースし、すぐにkubernetesで遊んでもらうのに役立ちます。

役立つリンク:



CentOS 7サーバーにCyber​​Panelをインストールして構成する方法

CentOS 7サーバーにCyber​​Panelをインストールして構成する方法

別のシステムを使用していますか?はじめにCyber​​Panelは、オープンソースでありOpenLiteSpeedを使用する市場で最初のコントロールパネルの1つです。なんてこった

Debian、CentOS、およびFreeBSDでSudoを使用する方法

Debian、CentOS、およびFreeBSDでSudoを使用する方法

LinuxおよびUnixのシステム管理者の間では、sudoユーザーを使用してサーバーにアクセスし、コマンドをルートレベルで実行することは非常に一般的です。sudの使用

CentOS 7へのNetdataのインストール

CentOS 7へのNetdataのインストール

別のシステムを使用していますか?Netdataは、リアルタイムのシステムメトリックモニタリングの分野における新星です。同じ種類の他のツールと比較すると、Netdata:

CentOS 7にJust Cause 2(JC2-MP)サーバーをインストールする方法

CentOS 7にJust Cause 2(JC2-MP)サーバーをインストールする方法

このチュートリアルでは、Just Cause 2マルチプレイヤーサーバーのセットアップ方法をよく学びます。前提条件開始する前に、システムが完全に更新されていることを確認してください

CentOS 7にStarbound Serverをインストールする方法

CentOS 7にStarbound Serverをインストールする方法

別のシステムを使用していますか?このチュートリアルでは、CentOS 7でStarboundサーバーをセットアップする方法を説明します。前提条件このゲームを所有している必要があります。

CentOS 8、Ubuntu 18.04、Debian 10、Fedora 31にGolang 1.13をインストールする方法

CentOS 8、Ubuntu 18.04、Debian 10、Fedora 31にGolang 1.13をインストールする方法

Go(Golangとも呼ばれます)は、静的に型付けされ、コンパイルされた、Cのようなプログラミング言語で、Googleによって開発されました。シンプルさと多用途性により、b

CentOS 7にDjangoをインストールする方法

CentOS 7にDjangoをインストールする方法

Djangoは、Webアプリケーションを作成するための一般的なPythonフレームワークです。Djangoを使用すると、ホイールを再発明することなく、アプリケーションをより速く構築できます。あなたが望むなら

CentOS 7 LAMP VPSにTextPattern CMSをインストールする方法

CentOS 7 LAMP VPSにTextPattern CMSをインストールする方法

別のシステムを使用していますか?TextPattern CMS 4.6.2はシンプルで柔軟な無料のオープンソースコンテンツ管理システム(CMS)であり、Webデザイナーが

CentOS 7にElggをインストールする

CentOS 7にElggをインストールする

別のシステムを使用していますか?Elggはオープンソースのソーシャルネットワーキングエンジンであり、キャンパスのソーシャルネットワークや

CentOS 7にFroxlor Server Management Panelをインストールする方法

CentOS 7にFroxlor Server Management Panelをインストールする方法

Froxlorは、オープンソースの無料で軽量かつ強力なサーバー管理パネルであり、Webホスティングサービスの確立と管理に最適です。ティ

CentOS 7でMatrix SynapseとRiotを使用してチャットサーバーを作成する

CentOS 7でMatrix SynapseとRiotを使用してチャットサーバーを作成する

Matrixは、分散型リアルタイム通信用のオープンスタンダードの通信プロトコルです。マトリックスは、上記に分散されているホームサーバーとして実装されています

CentOS 7にVtiger CRM Open Source Editionをインストールする方法

CentOS 7にVtiger CRM Open Source Editionをインストールする方法

Vtiger CRMは、企業が売り上げを伸ばし、顧客サービスを提供し、利益を増やすのに役立つ人気の顧客関係管理アプリケーションです。私

CentOS 7にPufferPanel(無料のMinecraftコントロールパネル)をインストールする方法

CentOS 7にPufferPanel(無料のMinecraftコントロールパネル)をインストールする方法

はじめにこのチュートリアルでは、Vultr VPSにPufferPanelをインストールしてください。PufferPanelは、オープンソースで自由に使用できるコントロールパネルで、あなたを管理します

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

この記事では、CentOS 7サーバーにApache 2.4をインストールするプロセスの概要を説明します。前提条件:最新のCentOS 7サーバー。sudoユーザー。Ste

PHPを5から7に更新する方法(NGINX / Apache、CentOS 7)

PHPを5から7に更新する方法(NGINX / Apache、CentOS 7)

はじめにこのチュートリアルでは、NGINXまたはApacheを使用してPHP 5 *を7に更新する方法について説明します。前提条件始める前に、リポジトリを追加する必要があります

CentOS 7にMoinMoinをインストールする方法

CentOS 7にMoinMoinをインストールする方法

MoinMoinは、Pythonで書かれたオープンソースのファイルシステムベースのWikiエンジンです。今日、MoinMoinはオープンソースコミュニティで広く使用されています。多くのベンダー

CentOS 7にSonarQubeをインストールする方法

CentOS 7にSonarQubeをインストールする方法

別のシステムを使用していますか?SonarQubeは、品質システム開発のためのオープンソースツールです。Javaで書かれており、複数のデータベースをサポートしています。それは提供します

CentOS 7へのPritunlのインストール

CentOS 7へのPritunlのインストール

PritunlはOpenVPNのオープンソース管理インターフェイスです。プライベートネットワークが可能で、ネイティブIPv6サポートがあり、使用方法は比較的簡単です。ター

OSの選択:CentOS、Ubuntu、Debian、FreeBSD、CoreOS、またはWindows Server

OSの選択:CentOS、Ubuntu、Debian、FreeBSD、CoreOS、またはWindows Server

この記事では、Vultrでテンプレートとして提供されるサーバーオペレーティングシステムの概要を説明します。CentOS CentOSはRHEL(Re

CentOS 7にphpPgAdminをインストールする

CentOS 7にphpPgAdminをインストールする

phpPgAdminは、広く使用されているPostgreSQL管理ツールです。これを使用して、直感的なWebインターフェイスでPostgreSQLデータベースを管理できます。この記事では、

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

最近、Appleは問題を修正するための補足アップデートであるmacOS Catalina 10.15.4をリリースしましたが、このアップデートにより、Macマシンのブリックにつながる問題がさらに発生しているようです。詳細については、この記事をお読みください

原子力が必ずしも悪ではないことを証明する5つの例

原子力が必ずしも悪ではないことを証明する5つの例

原子力は、過去の出来事のために私たちが決して尊重しないことを常に軽蔑していますが、それは必ずしも悪ではありません。詳細については、投稿をお読みください。

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

これを読んで、人工知能が小規模企業の間でどのように人気を博しているか、そして人工知能がどのように成長し、競合他社に優位に立つ可能性を高めているかを理解してください。

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

私たちのコンピューターは、ジャーナリングファイルシステムと呼ばれる組織化された方法ですべてのデータを保存します。これは、検索を押すとすぐにコンピューターがファイルを検索して表示できるようにする効率的な方法です。https://wethegeek.com/?p = 94116&preview = true

ビッグデータは人工知能をどのように変えていますか?

ビッグデータは人工知能をどのように変えていますか?

ビッグデータと人工知能は流行語ですが、それらがどのように相互に関連しているか知っていますか?さて、この記事を最後まで読んで、同じことを知ってください。

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartは、PHP、jQuery、およびHTML 5で記述された無料のオープンソースのショッピングカートプラットフォームです。シンプルで軽量、使いやすいeコマースソフトウォー

DebianでNFS共有をセットアップする

DebianでNFS共有をセットアップする

NFSはネットワークベースのファイルシステムであり、コンピューターはコンピューターネットワークを介してファイルにアクセスできます。このガイドでは、NFを介してフォルダーを公開する方法について説明します

Fedora 28にMatomo Analyticsをインストールする方法

Fedora 28にMatomo Analyticsをインストールする方法

別のシステムを使用していますか?Matomo(旧Piwik)は、Google Analyticsのオープンな代替手段であるオープンソースの分析プラットフォームです。Matomoのソースはoでホストされています

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

HTTPライブストリーミング(HLS)は、Apple Inc.によって実装された非常に堅牢なストリーミングビデオプロトコルです。HLSは、ファイアウォール、プロキシ、