Kubernetes 1.16クラスタをkubeadmでインストールする
kubeadmはKubernetes公式に提供されているKubernetesクラスタを迅速にインストールするためのツールで、Kubernetesの各バージョンのリリースに伴って同期的に更新され、kubeadmはクラスタ構成のいくつかの実践を調整し、実験kubeadmを通じてKubernetes公式のクラスタ構成におけるいくつかの新しいベストプラクティスを学ぶことができます.
オペレーティングシステムUbuntu 16.04+、Debian 9、CentOS 7、RHEL 7、Fedora 25/26(best-effort)、その他のメモリ2 GB+、2コアCPU+クラスタノード間で各ノードの一意のホスト名、MACアドレス、product_uuidチェックMACアドレス:ip linkまたはifconfig-aを使用してproduct_をチェックuuid:cat/sys/class/dmi/id/product_uuidはswapパーティションを禁止します.クbeletを正常に動作させるには
の準備を
1.1システム構成
ホスト名とIP対応関係:
各ホストがファイアウォールを有効にしている場合、Kubernetesの各コンポーネントに必要なポートを開く必要がある場合は、Installing kubeadmの「Check required ports」のセクションを参照してください.ここでは簡単に、各ノードでファイアウォールを無効にします.
SELINUX:
swapを閉じる:
同期時間:
/etc/sysctl.d/k 8 s.confファイルを作成し、次の内容を追加します.
コマンドを実行して変更を有効にします.
1.2 kube-proxyオープンipvsの前置条件
ipvsはすでにカーネルのメインに組み込まれているため、kube-proxyのipvsを開くには、以下のカーネルモジュールをロードし、すべてのKubernetesノードnode 1とnode 2で以下のスクリプトを実行する必要があります.
上のスクリプトで作成した/etc/sysconfig/modules/ipvs.modulesファイルは、ノードの再起動後に必要なモジュールを自動的にロードできることを保証します.lsmod|grep-e ip_を使用vs -e nf_conntrack_ipv 4コマンドは、必要なカーネルモジュールが正しくロードされているかどうかを確認します.
次に、各ノードにipsetパッケージ
1.3 Dockerのインストール
Kubernetesは1.6からCRI(Container Runtime Interface)コンテナランタイムインタフェースを使用します.デフォルトのコンテナの実行時はDockerのままで、kubeletにdockershim CRIを内蔵して実装されています.
dockerのyumソースをインストールするには:
最新のDockerバージョンを表示:
Kubernetes 1.16で現在サポートされているdockerバージョンのリストは1.13.1,17.03,17.06,17.09,18.06,18.09です.ここでは、各ノードにdockerの18.09.7バージョンをインストールします.
iptables filterテーブルのFOWARDチェーンのデフォルトポリシー(plicy)がACCEPTであることを確認します.
1.4 docker cgroup driverをsystemdに変更する
文書CRI installationの内容によれば、systemdをinit systemとして使用するLinuxのリリース版において、systemdをdockerとして使用するcgroup driverは、サーバノードがリソースの緊張状態でより安定していることを確保することができるため、ここでは各ノード上のdockerのcgroup driverをsystemdとして修正する./etc/docker/daemon.jsonの作成または変更:
dockerを再起動するには:
2.クbeadmを使用してKubernetesを配備
kubeadm:クラスタを起動するコマンドkubelet:クラスタ内でタスクを実行するエージェントkubectl:コマンドライン管理ツール
国内のネットワークの問題のため、一部のミラーウェアハウスはダウンロードできません.手動でダウンロードする方法を使うと言っています.
公式Kubernetes YUMソフトウェアソース
あるいはアリクラウドのKubernetes YUMソフトウェアソースを追加します
インストールコマンドを実行します.
インストールの結果、cri-tools、kubernetes-cni、socatの3つの依存もインストールされていることがわかります.Kubernetes 1.14から0.7.5バージョンにcni依存をアップグレードしました.socatはkubeletの依存cri-toolsはCRI(Container Runtime Interface)です.コンテナランタイムインタフェースのコマンドラインツールkubelet–helpを実行すると、元のkubeletのほとんどのコマンドラインflagパラメータがDEPRECATEDによって表示されます.たとえば、
すべてのノード/etc/fstabファイルを変更し、SWAPの自動マウントを注記し、free-mを使用してswapが閉じていることを確認します.swappinessパラメータ調整、修正/etc/sysctl.d/k 8 s.conf次の行を追加します.
次のコマンドを実行します.
変更を有効にします.
各ノードの電源を入れてクbeletサービスを開始します.
2.1 kubeadm initを使用してクラスタを初期化する
マスターを初期化する前に、変更/etc/sysconfig/kubeletの内容が次のとおりであることを確認します.
masterノード実行コマンド:
または
実行結果の主な内容は次のとおりです.
次のコマンドを実行します.
最後に与えられたコマンドは、他のノードでクラスタへの参加を実行します:
2.2 Pod Networkのインストール
次のコマンドを実行します.
コマンドの結果:
[ここで注意kube-flannel.ymlこのファイルのflannelのミラーリングは0.11.0で、quay.io/coreos/flannel:v 0.11.0-amd 64リンクの説明を追加してください]()
ミラーの引き抜きに失敗した場合は、nodeごとに手動で引き抜きます.
kubernetes-dashboardのインストール
まずyamlファイルをダウンロードして、中のミラーアドレスとService NodePortタイプを変更します:
kubernetes-dashboard.yamlファイルの変更:Deploymentミラーの引き抜き方法の変更:imagePullPolicy:IfNotPresentサービスの変更:(yamlファイルでtabキーの使用がサポートされていないため注意)
kubernetes-dashboard.yamlの適用
適用効果は次のとおりです.
saを作成し、デフォルトのcluster-admin管理者クラスタロールをバインドします.
kubernetes-dashboardにログイン:
注意:kubernetes-dashboardコマンドの表示:
既存の証明書を削除secret
kubernetes-dashboardの削除
kubernetes-dashboardにログインし、上記のアカウントを作成したtokenを使用してKubernetes Dashboardにログインします.
Kubernetesクラスタmetrics-serverのインストール
gitから最新metrics-serviceコードをダウンロード:
deploy/1.8+/metrics-server-deployment.yamlのimageバージョンをv 0.3.5に変更する前:
オペレーティングシステムUbuntu 16.04+、Debian 9、CentOS 7、RHEL 7、Fedora 25/26(best-effort)、その他のメモリ2 GB+、2コアCPU+クラスタノード間で各ノードの一意のホスト名、MACアドレス、product_uuidチェックMACアドレス:ip linkまたはifconfig-aを使用してproduct_をチェックuuid:cat/sys/class/dmi/id/product_uuidはswapパーティションを禁止します.クbeletを正常に動作させるには
の準備を
1.1システム構成
ホスト名とIP対応関係:
[root@k8s-master ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.201 k8s-master
192.168.1.202 k8s-node1
192.168.1.203 k8s-node2
各ホストがファイアウォールを有効にしている場合、Kubernetesの各コンポーネントに必要なポートを開く必要がある場合は、Installing kubeadmの「Check required ports」のセクションを参照してください.ここでは簡単に、各ノードでファイアウォールを無効にします.
systemctl stop firewalld
systemctl disable firewalld
SELINUX:
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
またはvi /etc/selinux/config
SELINUX=disabled
swapを閉じる:
swapoff -a #
vim /etc/fstab #
同期時間:
yum install ntpdate -y
ntpdate ntp.api.bz
/etc/sysctl.d/k 8 s.confファイルを作成し、次の内容を追加します.
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
コマンドを実行して変更を有効にします.
modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf
1.2 kube-proxyオープンipvsの前置条件
ipvsはすでにカーネルのメインに組み込まれているため、kube-proxyのipvsを開くには、以下のカーネルモジュールをロードし、すべてのKubernetesノードnode 1とnode 2で以下のスクリプトを実行する必要があります.
cat > /etc/sysconfig/modules/ipvs.modules <
上のスクリプトで作成した/etc/sysconfig/modules/ipvs.modulesファイルは、ノードの再起動後に必要なモジュールを自動的にロードできることを保証します.lsmod|grep-e ip_を使用vs -e nf_conntrack_ipv 4コマンドは、必要なカーネルモジュールが正しくロードされているかどうかを確認します.
次に、各ノードにipsetパッケージ
yum install ipset
がインストールされていることを確認する必要があります.ipvsのエージェントルールを表示しやすいように、管理ツールipvsadm yum install ipvsadm
をインストールしたほうがいいです.以上の前提条件が満たさなければ、kube-proxyの構成がipvsモードを開いても、iptablesモードに戻ります.1.3 Dockerのインストール
Kubernetesは1.6からCRI(Container Runtime Interface)コンテナランタイムインタフェースを使用します.デフォルトのコンテナの実行時はDockerのままで、kubeletにdockershim CRIを内蔵して実装されています.
dockerのyumソースをインストールするには:
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
最新のDockerバージョンを表示:
yum list docker-ce.x86_64 --showduplicates |sort -r
[root@go-docker ~]# yum list docker-ce.x86_64 --showduplicates |sort -r
* updates: mirrors.aliyun.com
Loading mirror speeds from cached hostfile
Loaded plugins: fastestmirror, langpacks
* extras: mirrors.aliyun.com
docker-ce.x86_64 3:19.03.5-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.4-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.3-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.2-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.0-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.9-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.8-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.7-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.6-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.5-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.4-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.3-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.2-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.3.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.2.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.2.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.3.ce-1.el7 docker-ce-stable
docker-ce.x86_64 17.03.2.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
* base: mirrors.aliyun.com
Available Packages
Kubernetes 1.16で現在サポートされているdockerバージョンのリストは1.13.1,17.03,17.06,17.09,18.06,18.09です.ここでは、各ノードにdockerの18.09.7バージョンをインストールします.
yum makecache fast
yum install -y --setopt=obsoletes=0 \ docker-ce-18.09.7-3.el7
systemctl start docker
systemctl enable docker
iptables filterテーブルのFOWARDチェーンのデフォルトポリシー(plicy)がACCEPTであることを確認します.
iptables -nvL
[root@k8s-master ~]# iptables -nvL
Chain INPUT (policy ACCEPT 20 packets, 2866 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DOCKER-USER all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 DOCKER-ISOLATION-STAGE-1 all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
0 0 DOCKER all -- * docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- docker0 docker0 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 19 packets, 2789 bytes)
pkts bytes target prot opt in out source destination
Chain DOCKER (1 references)
pkts bytes target prot opt in out source destination
Chain DOCKER-ISOLATION-STAGE-1 (1 references)
pkts bytes target prot opt in out source destination
0 0 DOCKER-ISOLATION-STAGE-2 all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain DOCKER-ISOLATION-STAGE-2 (1 references)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * docker0 0.0.0.0/0 0.0.0.0/0
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain DOCKER-USER (1 references)
pkts bytes target prot opt in out source destination
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
1.4 docker cgroup driverをsystemdに変更する
文書CRI installationの内容によれば、systemdをinit systemとして使用するLinuxのリリース版において、systemdをdockerとして使用するcgroup driverは、サーバノードがリソースの緊張状態でより安定していることを確保することができるため、ここでは各ノード上のdockerのcgroup driverをsystemdとして修正する./etc/docker/daemon.jsonの作成または変更:
vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
dockerを再起動するには:
systemctl restart docker
docker info | grep Cgroup
Cgroup Driver: systemd
2.クbeadmを使用してKubernetesを配備
kubeadm:クラスタを起動するコマンドkubelet:クラスタ内でタスクを実行するエージェントkubectl:コマンドライン管理ツール
国内のネットワークの問題のため、一部のミラーウェアハウスはダウンロードできません.手動でダウンロードする方法を使うと言っています.
docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.16.4
docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.16.4 k8s.gcr.io/kube-apiserver:v1.16.4
docker rmi registry.aliyuncs.com/google_containers/kube-apiserver:v1.16.4
docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.16.4
docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.16.4 k8s.gcr.io/kube-controller-manager:v1.16.4
docker rmi registry.aliyuncs.com/google_containers/kube-controller-manager:v1.16.4
docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.16.4
docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.16.4 k8s.gcr.io/kube-scheduler:v1.16.4
docker rmi registry.aliyuncs.com/google_containers/kube-scheduler:v1.16.4
# master node
docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.16.4
docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.16.4 k8s.gcr.io/kube-proxy:v1.16.4
docker rmi registry.aliyuncs.com/google_containers/kube-proxy:v1.16.4
# master node
docker pull registry.aliyuncs.com/google_containers/pause:3.1
docker tag registry.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
docker rmi registry.aliyuncs.com/google_containers/pause:3.1
docker pull registry.aliyuncs.com/google_containers/coredns:1.6.2
docker tag registry.aliyuncs.com/google_containers/coredns:1.6.2 k8s.gcr.io/coredns:1.6.2
docker rmi registry.aliyuncs.com/google_containers/coredns:1.6.2
docker pull registry.aliyuncs.com/google_containers/etcd:3.3.15-0
docker tag registry.aliyuncs.com/google_containers/etcd:3.3.15-0 k8s.gcr.io/etcd:3.3.15-0
docker rmi registry.aliyuncs.com/google_containers/etcd:3.3.15-0
docker pull quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64
docker tag quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64
docker rmi quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.1 gcr.io/kubernetes-helm/tiller:v2.14.1
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.5
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.5 k8s.gcr.io/metrics-server-amd64:v0.3.5
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.5
公式Kubernetes YUMソフトウェアソース
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
exclude=kube*
EOF
あるいはアリクラウドのKubernetes YUMソフトウェアソースを追加します
cat << EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
インストールコマンドを実行します.
yum makecache fast
yum install -y kubelet-1.16.4 kubeadm-1.16.4 kubectl-1.16.4
インストールの結果、cri-tools、kubernetes-cni、socatの3つの依存もインストールされていることがわかります.Kubernetes 1.14から0.7.5バージョンにcni依存をアップグレードしました.socatはkubeletの依存cri-toolsはCRI(Container Runtime Interface)です.コンテナランタイムインタフェースのコマンドラインツールkubelet–helpを実行すると、元のkubeletのほとんどのコマンドラインflagパラメータがDEPRECATEDによって表示されます.たとえば、
--address 0.0.0.0 The IP address for the Kubelet to serve on (set to 0.0.0.0 for all IPv4 interfaces and::for all IPv6 interfaces) (default 0.0.0.0) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
で、–configを使用してプロファイルを指定し、プロファイルで元のflagが構成されている内容を指定することを推奨します.詳細については、ここでSet Kubelet parameters via config fileを参照してください.これもKubernetesがダイナミックKubelet構成(Dynamic Kubelet Configuration)をサポートするために行ったもので、Reconfigure a Node’s Kubelet in a Live Clusterを参照してください.kubeletのプロファイルはjsonまたはyaml形式でなければなりません.詳細はこちらを参照してください.Kubernetes 1.8はシステムのSwapを閉じることを要求し始め、閉じなければデフォルトの構成ではkubeletは起動できません.システムをシャットダウンするSwapの方法は以下の通りです.swapoff -a
すべてのノード/etc/fstabファイルを変更し、SWAPの自動マウントを注記し、free-mを使用してswapが閉じていることを確認します.swappinessパラメータ調整、修正/etc/sysctl.d/k 8 s.conf次の行を追加します.
vm.swappiness=0
次のコマンドを実行します.
sysctl -p /etc/sysctl.d/k8s.conf
変更を有効にします.
各ノードの電源を入れてクbeletサービスを開始します.
systemctl enable kubelet.service
systemctl daemon-reload && systemctl restart kubelet
2.1 kubeadm initを使用してクラスタを初期化する
マスターを初期化する前に、変更/etc/sysconfig/kubeletの内容が次のとおりであることを確認します.
KUBELET_EXTRA_ARGS=--fail-swap-on=false
masterノード実行コマンド:
kubeadm init \
--apiserver-advertise-address=192.168.1.201 \
--kubernetes-version v1.16.4 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all
または
kubeadm init \
--apiserver-advertise-address=192.168.1.201 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.16.4 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
実行結果の主な内容は次のとおりです.
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.1.201:6443 --token v5pya1.dly1k110o9oxolo7 \
--discovery-token-ca-cert-hash sha256:8d411433bb08ba29267226a3f80f66f74fa86562f8daf38a3af57e6330b87fc1
次のコマンドを実行します.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
最後に与えられたコマンドは、他のノードでクラスタへの参加を実行します:
kubeadm join 192.168.1.201:6443 --token v5pya1.dly1k110o9oxolo7 \
--discovery-token-ca-cert-hash sha256:8d411433bb08ba29267226a3f80f66f74fa86562f8daf38a3af57e6330b87fc1
クラスタのステータスを確認し、コンポーネントがhealthy状態であることを確認します.kubectl get cs
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-0 Healthy {"health":"true"}
2.2 Pod Networkのインストール
次のコマンドを実行します.
kdir -p ~/k8s/
cd ~/k8s
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml
コマンドの結果:
[root@k8s-master k8s]# kubectl apply -f kube-flannel.yml
podsecuritypolicy.policy/psp.flannel.unprivileged created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds-amd64 created
daemonset.apps/kube-flannel-ds-arm64 created
daemonset.apps/kube-flannel-ds-arm created
daemonset.apps/kube-flannel-ds-ppc64le created
daemonset.apps/kube-flannel-ds-s390x created
[ここで注意kube-flannel.ymlこのファイルのflannelのミラーリングは0.11.0で、quay.io/coreos/flannel:v 0.11.0-amd 64リンクの説明を追加してください]()
ミラーの引き抜きに失敗した場合は、nodeごとに手動で引き抜きます.
docker pull quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64
docker tag quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64
docker rmi quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64
kubernetes-dashboardのインストール
まずyamlファイルをダウンロードして、中のミラーアドレスとService NodePortタイプを変更します:
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
kubernetes-dashboard関連ミラーをダウンロードします:docker pull kubernetesui/dashboard:v2.0.0-beta8
docker pull kubernetesui/metrics-scraper:v1.0.2
kubernetes-dashboard.yamlファイルの変更:Deploymentミラーの引き抜き方法の変更:imagePullPolicy:IfNotPresentサービスの変更:(yamlファイルでtabキーの使用がサポートされていないため注意)
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
NodePort: 30001
selector:
k8s-app: kubernetes-dashboard
"recommended.yaml" 289L, 7104C written
kubernetes-dashboard.yamlの適用
kubectl apply -f recommended.yaml
適用効果は次のとおりです.
[root@k8s-master k8s]# kubectl apply -f recommended.yaml
namespace/kubernetes-dashboard unchanged
serviceaccount/kubernetes-dashboard unchanged
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
saを作成し、デフォルトのcluster-admin管理者クラスタロールをバインドします.
kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin
kubernetes-dashboardにログイン:
kubectl get secret -n kubernetes-dashboard
kubectl describe secret dashboard-admin-token-bwdjj -n kubernetes-dashboard
注意:kubernetes-dashboardコマンドの表示:
kubectl --namespace=kubernetes-dashboard get service kubernetes-dashboard
Googleブラウザがkubernetes dashboardを開くことができない方法を解決しますmkdir key && cd key
証明書の生成openssl genrsa -out dashboard.key 2048
openssl req -new -out dashboard.csr -key dashboard.key -subj '/CN=192.168.246.200'
openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
既存の証明書を削除secret
kubectl delete secret kubernetes-dashboard-certs -n kubernetes-dashboard
新しい証明書を作成secret kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kubernetes-dashboard
pod kubectl get pod -n kubernetes-dashboard
再起動pod kubectl delete pod <pod name> -n kubernetes-dashboard
pad nameがkubernetes-dashboardの名前であることを確認)kubernetes-dashboardの削除
kubectl get secret,sa,role,rolebinding,services,deployments --namespace=kube-system | grep dashboard
kubectl delete deployment kubernetes-dashboard --namespace=kube-system
kubectl delete service kubernetes-dashboard --namespace=kube-system
kubectl delete role kubernetes-dashboard-minimal --namespace=kube-system
kubectl delete rolebinding kubernetes-dashboard-minimal --namespace=kube-system
kubectl delete sa kubernetes-dashboard --namespace=kube-system
kubectl delete secret kubernetes-dashboard-certs --namespace=kube-system
kubectl delete secret kubernetes-dashboard-key-holder --namespace=kube-system
kubernetes-dashboardにログインし、上記のアカウントを作成したtokenを使用してKubernetes Dashboardにログインします.
kubectl get secret -n kube-system
kubectl describe secret dashboard-admin-token-bwdjj -n kube-system
Kubernetesクラスタmetrics-serverのインストール
gitから最新metrics-serviceコードをダウンロード:
wget https://github.com/kubernetes-incubator/metrics-server/archive/v0.3.5.tar.gz
解凍:tar zxvf v0.3.5.tar.gz
deploy/1.8+/metrics-server-deployment.yamlを変更します.追加位置と内容は以下の通り:deployment.spec.template.spec.containers[0].command
command:
- /metrics-server
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname
deploy/1.8+/metrics-server-deployment.yamlのimageバージョンをv 0.3.5に変更する前:
k8s.gcr.io/metrics-server-amd64:v0.3.5
imagePullPolicy: Always
変更後:k8s.gcr.io/metrics-server-amd64:v0.3.5
imagePullPolicy: IfNotPresent
metrics-serverをインストールします.kubectl apply -f metrics-server-0.3.3/deploy/1.8+/
確認:kubectl top po -n kube-system
[root@k8s-master k8s]# kubectl top pod -n kube-system
NAME CPU(cores) MEMORY(bytes)
coredns-5644d7b6d9-459zs 2m 10Mi
coredns-5644d7b6d9-v4xlt 2m 10Mi
etcd-k8s-master 6m 48Mi
kube-apiserver-k8s-master 41m 429Mi
kube-controller-manager-k8s-master 6m 68Mi
kube-flannel-ds-amd64-fkpph 1m 12Mi
kube-flannel-ds-amd64-m45n8 1m 11Mi
kube-flannel-ds-amd64-qjqzd 1m 9Mi
kube-proxy-7xhhs 1m 20Mi
kube-proxy-dvqbj 1m 13Mi
kube-proxy-xs9lm 2m 13Mi
kube-scheduler-k8s-master 2m 24Mi
metrics-server-6946b8b5b5-52fb8 6m 11Mi