はじめに
コンテナと呼ばれる小さな仮想環境 、アプリケーションの開発と管理に不可欠になっています。
分離されたコンテナ内でアプリケーションを操作しても、ホストオペレーティングシステムには影響しません。コンテナはオペレーティングシステムを必要としないため、仮想マシンよりも効率的です。
Kubernetes は、複数のコンテナにまたがるリソースの導入、拡張、管理を支援するオープンソースプラットフォームです。
このチュートリアルに従って、CentOS7システムにKubernetesをインストールする方法を学びます。
前提条件
- CentOS 7を実行している複数のLinuxサーバー(1つのマスターノード、複数のワーカーノード)
- sudoを使用するすべてのシステムのユーザーアカウント またはroot権限
- yum パッケージマネージャー、デフォルトで含まれています
- コマンドライン/ターミナルウィンドウ
CentOS7にKubernetesをインストールする手順
Kubernetesを使用するには、コンテナ化エンジンをインストールする必要があります 。現在、最も人気のあるコンテナソリューションは Docker 。 DockerはCentOSにインストールする必要があります。両方 マスターノードとワーカーノードで。
ステップ1:Kubernetesリポジトリを設定する
Kubernetesパッケージは、CentOS7の公式リポジトリからは入手できません。この手順は、マスターノード、およびコンテナのセットアップに使用する予定の各ワーカーノードで実行する必要があります。次のコマンドを入力して、Kubernetesリポジトリを取得します。
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
EOF
ステップ2: kubeletをインストールします 、 kubeadm 、および kubectl
これらの3つの基本パッケージは、Kubernetesを使用できるようにするために必要です。各ノードに次のパッケージをインストールします。
sudo yum install -y kubelet kubeadm kubectl
systemctl enable kubelet
systemctl start kubelet
これで、ツールと基本パッケージを含むKubernetesが正常にインストールされました。
クラスタをデプロイする前に、必ずホスト名を設定し、ファイアウォールとカーネル設定を構成してください。
ステップ3:ノードにホスト名を設定する
各ノードに一意のホスト名を付けるには、次のコマンドを使用します:
sudo hostnamectl set-hostname master-node
または
sudo hostnamectl set-hostname worker-node1
この例では、マスターノードの名前はmaster-nodeになり、ワーカーノードの名前はworker-node1になります。
ホストエントリまたはDNSレコードを作成して、すべてのノードのホスト名を解決します。
sudo vi /etc/hosts
エントリあり:
192.168.1.10 master.phoenixnap.com master-node
192.168.1.20 node1. phoenixnap.com node1 worker-node
ステップ4:ファイアウォールを構成する
ノード、コンテナー、およびポッドは、それらの機能を実行するためにクラスター全体で通信できる必要があります。フロントエンドでは、CentOSでFirewalldがデフォルトで有効になっています。リストされたコマンドを入力して、次のポートを追加します。
マスターノードで次のように入力します:
sudo firewall-cmd --permanent --add-port=6443/tcp
sudo firewall-cmd --permanent --add-port=2379-2380/tcp
sudo firewall-cmd --permanent --add-port=10250/tcp
sudo firewall-cmd --permanent --add-port=10251/tcp
sudo firewall-cmd --permanent --add-port=10252/tcp
sudo firewall-cmd --permanent --add-port=10255/tcp
sudo firewall-cmd --reload
ポートが追加されるたびに、システムは「成功」メッセージで確認します。
各ワーカーノードで次のコマンドを入力します。
sudo firewall-cmd --permanent --add-port=10251/tcp
sudo firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd --reload
ステップ5:Iptables設定を更新する
net.bridge.bridge-nf-call-iptables
を設定します sysctl構成ファイルで「1」に変更します。これにより、フィルタリングおよびポート転送中にパケットがIPテーブルによって適切に処理されるようになります。
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
ステップ6:SELinuxを無効にする
コンテナはホストファイルシステムにアクセスする必要があります。 SELinuxは、セキュリティ機能を効果的に無効にするパーミッシブモードに設定する必要があります。
SELinuxを無効にするには、次のコマンドを使用します。
sudo setenforce 0
sudo sed -i ‘s/^SELINUX=enforcing$/SELINUX=permissive/’ /etc/selinux/config
ステップ7:SWAPを無効にする
最後に、kubeletが正しく機能するようにするには、SWAPを無効にする必要があります。
sudo sed -i '/swap/d' /etc/fstab
sudo swapoff -a
Kubernetesクラスターをデプロイする方法
ステップ1:kubeadmを使用してクラスターを作成する
次のコマンドを実行して、クラスターを初期化します。
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
ネットワーク速度によっては、プロセスが完了するまでに数分かかる場合があります。このコマンドが終了すると、kubeadmjoinメッセージが表示されます。エントリをメモし、それを使用して、後の段階でワーカーノードをクラスターに参加させます。
ステップ2:クラスターを通常のユーザーとして管理する
クラスタの使用を開始するには、次のように入力して、通常のユーザーとしてクラスタを実行する必要があります。
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
ステップ3:ポッドネットワークを設定する
ポッドネットワークを使用すると、クラスター内のノードが通信できます。利用可能なKubernetesネットワークオプションがいくつかあります。次のコマンドを使用して、フランネルをインストールします ポッドネットワークアドオン:
sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
フランネルを使用する場合は、ファイアウォールルールを編集して、フランネルのデフォルトポート 8285のトラフィックを許可します。 。
ステップ4:クラスターのステータスを確認する
マスターサーバーで次のコマンドを入力して、ノードのステータスを確認します。
sudo kubectl get nodes
ポッドネットワークがインストールされたら、次のように入力してCoreDNSポッドが実行されていることを確認することで、ポッドネットワークが機能していることを確認できます。
sudo kubectl get pods --all-namespaces
ステップ5:ワーカーノードをクラスターに参加させる
ステップ1に示されているように 、 kubeadm join
を使用できます 各ワーカーノードでコマンドを実行して、クラスターに接続します。
kubeadm join --discovery-token cfgrty.1234567890jyrfgd --discovery-token-ca-cert-hash sha256:1234..cdef 1.2.3.4:6443
コードをマスターサーバーのコードに置き換えます。クラスタ上のワーカーノードごとにこのアクションを繰り返します。