Kubernetesは、Googleが開発したコンテナ化されたアプリケーションを管理するためのオープンソースプラットフォームです。これにより、コンテナー化されたアプリケーションをクラスター化された環境で管理、スケーリング、および自動的にデプロイできます。 Kubernetesを使用すると、複数のホスト間でコンテナをオーケストレーションし、コンテナ化されたアプリケーションをすべてのリソースでオンザフライでスケーリングし、コンテナ管理環境を一元化できます。
このチュートリアルでは、CentOS 7にKubernetesをインストールして設定する方法を段階的に説明します。1台のサーバー「k8s-master」をKubernetesホストマスターとして使用し、2台のサーバーをKubernetesノード「node01」として使用します。および「node02」。
- 3台のCentOS7サーバー
- 10.0.15.10 k8s-master
- 10.0.15.21 node01
- 10.0.15.22 node02
- root権限
何をしますか?
- Kubernetesのインストール
- Kubernetesクラスターの初期化
- node01とnode02をクラスターに追加する
- テスト-最初のポッドを作成
この最初のステップでは、Kubernetesをインストールするためにこれら3つのサーバーを準備するため、マスターサーバーとノードサーバーですべてのコマンドを実行します。
サーバーの既存の構成を変更し、docker-ceやkubernetes自体を含むいくつかのパッケージをインストールすることで、すべてのサーバーをKubernetesインストール用に準備します。
vimエディタを使用してすべてのサーバーのhostsファイルを編集します。
vim / etc / hosts
以下にホストのリストを貼り付けます。
10.0.15.10 k8s-master
10.0.15.21 node01
10.0.15.22 node02
保存して終了します。
-SELinuxを無効にする
このチュートリアルでは、DockerのSELinux構成については説明しないため、無効にします。
以下のコマンドを実行してSELinuxを無効にします。
setenforce 0
sed -i --follow-symlinks's / SELINUX =enforcing / SELINUX =disable / g'/ etc / sysconfig / selinux
-br_netfilterカーネルモジュールを有効にする
br_netfilterモジュールは、kubernetesのインストールに必要です。このカーネルモジュールを有効にして、ブリッジを通過するパケットがフィルタリングとポート転送のためにiptablesによって処理され、クラスター全体のkubernetesポッドが相互に通信できるようにします。
以下のコマンドを実行して、br_netfilterカーネルモジュールを有効にします。
modprobe br_netfilter
echo '1'> / proc / sys / net / bridge / bridge-nf-call-iptables
-SWAPを無効にする
次のコマンドを実行して、kubernetesインストールのSWAPを無効にします。
swapoff -a
次に、「/ etc/fstab」ファイルを編集します。
vim / etc / fstab
スワップラインのUUIDを以下のようにコメントします。
-DockerCEをインストールします
Dockerリポジトリから最新バージョンのDocker-ceをインストールします。
docker-ceのパッケージ依存関係をインストールします。
yum install -y yum-utils device-mapper-persistent-data lvm2
dockerリポジトリをシステムに追加し、yumコマンドを使用してdocker-ceをインストールします。
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce
docker-ceのインストールを待ちます。
-Kubernetesをインストールします
次のコマンドを実行して、kubernetesリポジトリをcentos7システムに追加します。
cat </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
次に、以下のyumコマンドを使用して、kubernetesパッケージkubeadm、kubelet、およびkubectlをインストールします。
yum install -y kubelet kubeadm kubectl
インストールが完了したら、それらのサーバーをすべて再起動します。
sudo再起動
サーバーに再度ログインして、サービス、Docker、およびkubeletを開始します。
systemctl start docker &&systemctl enable docker
systemctl start kubelet &&systemctl enable kubelet
-cgroup-driverを変更します
docker-ceとkubernetesが同じ「cgroup」を使用していることを確認する必要があります。
dockerinfoコマンドを使用してdockercgroupを確認します。
docker情報| grep -i cgroup
そして、Dockerが' cgroupfsを使用していることがわかります 'cgroup-driverとして。
次に、以下のコマンドを実行して、kuberetescgroup-driverを「cgroupfs」に変更します。
sed -i's / cgroup-driver =systemd / cgroup-driver =cgroupfs / g'/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
systemdシステムをリロードし、kubeletサービスを再起動します。
systemctlデーモン-リロード
systemctlrestart kubelet
これで、Kubernetesクラスターを構成する準備が整いました。
このステップでは、kubernetesマスタークラスターの構成を初期化します。
シェルをマスターサーバー「k8s-master」に移動し、以下のコマンドを実行してkubernetesマスターをセットアップします。
kubeadm init --apiserver-advertise-address =10.0.15.10 --pod-network-cidr =10.244.0.0 / 16
注:
-apiserver-advertise-address =KubernetesがAPIサーバーをアドバタイズするIPアドレスを決定します。
-pod-network-cidr =ポッドネットワークのIPアドレスの範囲を指定します。 「フランネル」仮想ネットワークを使用しています。 weave-netやcalicoなどの別のポッドネットワークを使用する場合は、範囲のIPアドレスを変更してください。
Kubernetesの初期化が完了すると、次のような結果が得られます。
注:
' kubeadm join ... ... ...をコピーします 'テキストエディタへのコマンド。このコマンドは、新しいノードをkubernetesクラスターに登録するために使用されます。
ここで、Kubernetesを使用するには、結果のようにいくつかのコマンドを実行する必要があります。
新しい「.kube」構成ディレクトリを作成し、構成「admin.conf」をコピーします。
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クラスターにデプロイします。
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
フランネルネットワークがKubernetesクラスターにデプロイされました。
1分待ってから、以下のコマンドを使用してkubernetesノードとポッドを確認してください。
kubectlgetノード
kubectlget pods --all-namespaces
そして、「k8s-master」ノードが「ready」ステータスの「master」クラスターとして実行され、ネットワークポッドの「kube-flannel-ds」を含む、クラスターに必要なすべてのポッドを取得します。構成。
すべてのkubeシステムポッドのステータスが「実行中」であることを確認してください。
Kubernetesクラスタマスターの初期化と設定が完了しました。
このステップでは、node01とnode02を追加して「k8s」クラスターに参加させます。
node01サーバーに接続し、上部にコピーしたようにkubeadmjoinコマンドを実行します。
kubeadm join 10.0.15.10:6443 --token vzau5v.vjiqyxq26lzsf28e --discovery-token-ca-cert-hash sha256:e6d046ba34ee03e7d55e1f5ac6d2de09fd6d7e6959d16782ef0778794b94c61e
node02サーバーに接続し、上部にコピーしたようにkubeadmjoinコマンドを実行します。
kubeadm join 10.0.15.10:6443 --token vzau5v.vjiqyxq26lzsf28e --discovery-token-ca-cert-hash sha256:e6d046ba34ee03e7d55e1f5ac6d2de09fd6d7e6959d16782ef0778794b94c61e
数分待ってから「k8s-master」マスタークラスタサーバーに戻り、次のコマンドを使用してノードとポッドを確認します。
kubectlgetノード
kubectlget pods --all-namespacesこれで、node01が取得され、node02がステータス「ready」でクラスターに追加されました。
node01とnode02がkubernetesクラスターに追加されました。
ステップ4-最初のポッドを作成するテスト このステップでは、Nginxポッドをkubernetesクラスターにデプロイしてテストを行います。ポッドは、Kubernetesで実行される共有ストレージとネットワークを備えた1つ以上のコンテナのグループです。ポッドには、Dockerコンテナなどの1つ以上のコンテナが含まれています。
「k8s-master」サーバーにログインし、kubectlコマンドを使用して「nginx」という名前の新しいデプロイを作成します。
kubectl create deploy nginx --image =nginx'nginx'デプロイメントの選択の詳細を表示するには、次のコマンドを実行します。
kubectlはデプロイメントnginxについて説明しますそして、nginxポッドのデプロイ仕様を取得します。
次に、インターネット経由でアクセスできるnginxポッドを公開します。そして、このために新しいサービスNodePortを作成する必要があります。
以下のkubectlコマンドを実行します。
kubectl create service nodeport nginx --tcp =80:80
エラーがないことを確認してください。次に、以下のkubectlコマンドを使用してnginxサービスノードポートとIPを確認します。
kubectl get pods
kubectl get svc
これで、nginxポッドがクラスターIPアドレス「10.160.60.38」ポート80で実行され、ノードのメインIPアドレス「10.0.15.x」がポート「30691」で実行されるようになります。
「k8s-master」サーバーから、以下のcurlコマンドを実行します。
curl node01:30691
curl node02:30691
NginxポッドはKubernetesクラスターの下にデプロイされ、インターネット経由でアクセスできます。
Webブラウザからアクセスします。
http://10.0.15.10:30691/
そして、Nginxのデフォルトページが表示されます。
node02サーバー上-http://10.0.15.11:30691 /
CentOS7でのKubernetesクラスターのインストールと構成が正常に完了しました。
Cent OS