1はじめに
Kubeadmは、公式コミュニティによって立ち上げられたkubernetesクラスターを迅速にデプロイするためのツールです。
このツールは、次の2つの手順でkubernetesクラスターのデプロイを完了できます。
1.1マスターノードを作成する
$ kubeadm init
1.2現在のクラスターにノードノードを追加する
$ kubeadm join <Master节点的IP和端口 >
2.インストール要件
- 1つ以上のマシン、オペレーティングシステムCentOS7.x-86_x64
- ハードウェア構成:2GB以上のRAM、2CPU以上のCPU、30GB以上のハードディスク
- クラスタ内のすべてのマシン間のネットワーク通信
- 外部ネットワークにアクセスできます。ミラーを引く必要があります
- スワップパーティションを禁止する
3.実験の配置
役割 | IP |
---|---|
k8s-master | 192.168.153.151 |
k8s-node1 | 192.168.153.152 |
k8s-node2 | 192.168.153.153 |
4.3台のサーバーの環境を構成します
4.1ファイアウォールをオフにします。
systemctl stop firewalld
systemctl disable firewalld
4.2 selinuxを閉じる:
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
4.3スワップを閉じる
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
4.4ホスト名を設定する
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2
4.5すべてのホストにホストを追加する
cat >> /etc/hosts << EOF
192.168.153.151 k8s-master
192.168.153.152 k8s-node1
192.168.153.153 k8s-node2
EOF
4.6ブリッジされたIPv4トラフィックをiptablesのチェーンに渡します。
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
有効な注文
sysctl --system
4.5時刻同期のためにサーバーを再起動します
サーバーを再起動します
reboot
インストールコマンド
yum install ntpdate -y
同期時間
ntpdate ntp.aliyun.com
5.すべてのノードにDocker / kubeadm / kubeletをインストールします
KubernetesのデフォルトのCRI(コンテナランタイム)はDockerであるため、最初にDockerをインストールします。
5.1Dockerをインストールする
DockerのAliyunソースを入手する
wgetコマンドをインストールする
yum -y install wget
AlibabaCloudのソースを入手する
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
Dockerをインストールする
yum -y install docker-ce-18.06.1.ce-3.el7
dockerを起動し、起動時に起動するように設定します
systemctl enable docker && systemctl start docker
Dockerバージョンを表示
docker --version
ミラーアクセラレーションを構成する
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF
Dockerサービスを再起動します
systemctl restart docker
5.2 Alibaba CloudYUMソフトウェアソースを追加する
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
5.3 kubeadm、kubelet、kubectlをインストールします
バージョンが頻繁に更新されるため、ここでは展開用にバージョン番号を指定します。
yum install -y kubelet-1.17.0 kubeadm-1.17.0 kubectl-1.17.0
起動後にkubeletをセルフスタートに設定します。最初に起動しないでください
systemctl enable kubelet
6. KubernetesMasterをデプロイします
192.168.153.151(マスター)で実行
kubeadm init \
--apiserver-advertise-address=192.168.153.151 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.17.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
初期化が成功すると、次のインターフェイスが表示されます
注文の実行:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
7.ポッドネットワークプラグイン(CNI)をインストールします
マスターで実行
公式サイトのプラグインをインストールする
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
インストールが失敗した場合、あなたは私がアップロードKUBE-flannel.ymlファイルをダウンロードすることができ、およびミラーアドレスが変更されました。
ダウンロードリンク>> https://download.csdn.net/download/m0_46674735/14930704
のコマンドを実行します。kubectl apply -f kube-flannel.yaml
インストールそれ
[root@host-151 ~]# kubectl apply -f kube-flannel.yaml
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
ポッドの表示ステータスはすべて実行中です
[root@host-151 ~]# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-9d85f5447-gc8rh 1/1 Running 0 4m39s
coredns-9d85f5447-lr8d9 1/1 Running 0 4m39s
etcd-k8s-master 1/1 Running 0 4m53s
kube-apiserver-k8s-master 1/1 Running 0 4m53s
kube-controller-manager-k8s-master 1/1 Running 0 4m53s
kube-flannel-ds-amd64-sjrbq 1/1 Running 0 104s
kube-proxy-rf842 1/1 Running 0 4m39s
kube-scheduler-k8s-master 1/1 Running 0 4m53s
8. 加入Kubernetes Node
8.1クラスターに参加する
192.168.153.152/153で実行
マスターを初期化した後にコマンドが生成されます。直接コピーするだけです。
kubeadm join 192.168.153.151:6443 --token 4ewer2.chl3n0wtfi36xc6c \
--discovery-token-ca-cert-hash sha256:78512851a2e78e14ea454f0a65e9853f9085ec8348a2e0f781347fa5c882f53a
8.2ノードが正常に追加されたことを確認します
[root@host-151 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 5m9s v1.17.0
k8s-node1 Ready <none> 2m58s v1.17.0
k8s-node2 Ready <none> 2m54s v1.17.0
9.ダッシュボードをデプロイする
9.1マスターノードでコマンドを実行する
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
実行に失敗した場合は、アップロードしたファイルを使用して次のコマンドを実行できます。
ダウンロードリンク>> https://download.csdn.net/download/m0_46674735/14930771
kubectl apply -f kubernetes-dashboard.yaml
デフォルトでは、ダッシュボードにはクラスター内でのみアクセスできます。サービスをNodePortタイプに変更し、外部に公開します。ドキュメントが変更されているため、直接実行するだけです。
9.2マスターノードで次のコマンドを実行します。
サービスアカウントを作成し、デフォルトのcluster-admin管理者クラスターロールをバインドします。
kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
コマンドが正常に実行されると、トークンが生成されます
9.3アクセスアドレス:(https://nodeip:30001
注:使用されますhttps
)
Firefoxブラウザーを例にとる
と、詳細オプションを
クリックし、リスクを受け入れて続行を
クリックし、トークンをクリックして、上で生成されたトークンを貼り付け
、管理ページに正常にアクセスします。
10.kubernetesクラスターをテストします
Kubernetesクラスターにポッドを作成し、正常に実行されていることを確認します。
kubectl create deployment nginx --image=nginx
ポッドが正常に実行されることを確認します
[root@host-151 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-86c57db685-vvmkp 1/1 Running 0 27s