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で遊んでもらうのに役立ちます。

役立つリンク:



Leave a Comment

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

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

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

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

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

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