システム企画
ノード情報
Kubeadm は、 Kubernetes クラスターを迅速にデプロイするための kubeadm init および kubeadm join を提供する K8s デプロイメント ツールです。, このツールは、次の 2 つの手順で kubernetes クラスターのデプロイを完了できます。
- まず、マスターノード kubeadm init を作成します。
- 次に、ノード ノードを現在のクラスターに追加します。 $ kubeadm join <マスター ノードの IP およびポート>
公式アドレス: https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/
すべてのノードに Docker/kubeadm/kubelet をインストールします。
安装docker
$ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O
/etc/yum.repos.d/docker-ce.repo
$ yum -y install docker-ce
$ systemctl enable docker && systemctl start docker
添加kubernetes yum 源
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
安装 kubeadm,kubelet 和 kubectl ,会自动安装几个重要依赖包:socat,cri-tools,cni等包
#查看版本 yum list kubelet
# 列出所有版本 yum list kubelet --showduplicates | sort -r
$ yum install -y kubelet kubeadm kubectl
$ systemctl enable kubelet
Kubernetesマスターをデプロイする
(マスター) で実行
$ kubeadm init \
--apiserver-advertise-address=192.168.44.129 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.19.4 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
現在のノード IP (マスター) 192.168.44.129
イメージ (デフォルトのプル イメージ アドレス k8s.gcr.io は中国ではアクセスできないため、ここで Alibaba Cloud ミラー ウェアハウスのアドレスを指定します。)
このプロセスは比較的時間がかかります。プルしたイメージを表示する docker イメージ
kube -proxy v1.19.4
kube-apiserver v1.19.4
kube-controller-manager v1.19.4
kube-scheduler v1.19.4
etcd 3.4.13-0
coredns 1.7.0
Pause 3.2
バージョン 指定されたインストール バージョン v1 .19.4
pod-network-cidr 10.244 .0.0/16 フランネルはこのネットワーク セグメントを使用します
インストールを成功させるためのヒント:
Kubernetes コントロール プレーンが正常に初期化されました。
クラスターの使用を開始するには、通常のユーザーとして次のコマンドを実行する必要があります:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown ( id − u ) : (id -u):(私は−う): (id -g) $HOME/.kube/config
ここで、ポッド ネットワークをクラスターにデプロイする必要があります。https://kubernetes.io/docs/concepts/cluster-administration/addons/
にリストされているオプションの 1 つを指定して「kubectl apply -f [podnetwork].yaml」を実行します。その後、 root としてそれぞれに次のように入力します:kubeadm join 192.168.44.129:6443 --token ttnu3m.97oxzty62fgk7ms6–discovery-token-ca-cert-hash sha256:e60d00ddef29c30a562bb87c9bf8d81ea1c5db9a5b607a42c3cff0 c4cdb059ca
プロンプトに従って、マスターノードが実行されます。
# mkdir -p $HOME/.kube
# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# sudo chown $(id -u):$(id -g) $HOME/.kube/config
查看结果 【节点处于NotReady状态,因为还没有网络组建,下一步安装flannel】
# kubectl get nodes
ノード結合
# kubeadm join 192.168.44.129:6443 --token ttnu3m.97oxzty62fgk7ms6 \
--discovery-token-ca-cert-hash sha256:e60d00ddef29c30a562bb87c9bf8d81ea1c5db9a5b607a42c3cff0c4cdb059ca
查看结果 【节点处于NotReady状态,因为还没有网络组建,下一步安装flannel】
# kubectl get nodes
ただし、このときにこのコマンドを書き留めていないと、後でノードを追加するときにこのコマンドを忘れてしまう可能性があるため、このときは次のコマンドを実行する必要があります: kubeadm token create --print-join-command
ポッド ネットワーク プラグイン (CNI) マスター ノードをインストールする
Kubernetes は、さまざまなオープン ソース ネットワーク CNI プラグインをサポートしています。一般的なプラグインには、flannel、calico、canal、weave などが含まれます。flannel は、vxlan トンネリングを通じてトンネル ネットワークを構築するオーバーレイ ネットワーク モデルです。
# For Kubernetes v1.17+
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 查看 -n 指定命名空间,默认是default系统组建都安装在kube-system
# -o wide 查看详细情况 -w 监控变化
kubectl get pods -n kube-system -o wide
kubectl get nodes
外部ミラーリングは失敗しますが、さらに数回試行すると成功します。
Verify
スケジューラー、コントローラーマネージャー、etcd などの kubernetse サービスコンポーネントのステータスを表示します。
#查看master组件角色
kubectl get componentstatuses
#查看node节点列表
kubectl get nodes
# 查看节点标签信息
kubectl get node --show-labels
#查看node节点详情
kubectl describe node k8s.node1.com
Kubernetes クラスターにポッドを作成し、それが実行されていることを確認します。
$ kubectl create deployment nginx --image=nginx
$ kubectl expose deployment nginx --port=80 --type=NodePort
-- svc查看服务端口 -o wide pod详细信息
$ kubectl get pod,svc -o wide
# 将资源的配置以yaml的格式输出出来。也可以使用json输出json格式
$ kubectl get pod xxx -o yaml
アクセスアドレス: http://NodeIP:32606 [ポート 80 は 32606 にマッピングされ、すべてのノードがこのポートをリークします]
ノードを削除します
首先(drain 卸载、 delete删除):
kubectl drain <node name> --delete-local-data --force --ignore-daemonsets
kubectl delete node <node name>
然后使用
kubeadm reset
若需要重新加入 ,则再次执行 kubeadm init or kubeadm join