K8S インストール プロセス 9: Kubernetes ワーカー ノードのインストール

前提条件

K8Sのインストールプロセスの最初の7つのプロセスのインストールが完了しました。

  • すべての証明書は /etc/kubernetes/ssl ディレクトリに保存されます
  • すべての kubernetes 構成は /opt/kubernetes/cfg ディレクトリに保存されます

これら 2 つのディレクトリが空であることが判明した場合は、上記の内容を kubernetes ノードから現在のノードの対応するディレクトリの場所にコピーしてください。


1. インストールパッケージを入手します

このファイルは、 K8Sインストール プロセス 8: Kubernetes マスター ノードのインストールkubernetes.tar.gz8.4で生成されました。次に、kubernetes ワーカー ノードのインストールのために、kubernetes マスター ノードからこのファイルを取得します。

  • kubernetes ワーカー ノードのインストール ファイルを取得する
scp root@<kubernetes-master-ip>:/opt/kubernetes.tar.gz /opt/
  • kubernetes.tar.gzインストールパッケージを解凍します
cd /opt
tar -xvf kubernetes.tar.gz
mkdir /opt/kubernetes/manifests
cp /opt/kubernetes/cfg/admin.kubeconfig  /opt/kubernetes/cfg/kubelet.kubeconfig 

2.kubeletサービスをインストールする

2.1 kublet-config.yaml 構成の作成

apiVersion: kubelet.config.k8s.io/v1beta1
authentication:
  anonymous:
    enabled: false
  webhook:
    cacheTTL: 0s
    enabled: true
  x509:
    clientCAFile: /etc/kubernetes/ssl/ca.pem
authorization:
  mode: Webhook
  webhook:
    cacheAuthorizedTTL: 0s
    cacheUnauthorizedTTL: 0s
cgroupDriver: systemd
clusterDNS:
- 10.255.0.2
clusterDomain: cluster.local
cpuManagerReconcilePeriod: 0s
evictionPressureTransitionPeriod: 0s
fileCheckFrequency: 0s
healthzBindAddress: 127.0.0.1
healthzPort: 10248
httpCheckFrequency: 0s
imageMinimumGCAge: 0s
kind: KubeletConfiguration
logging:
  flushFrequency: 0
  options:
    json:
      infoBufferSize: "0"
  verbosity: 0
memorySwap: {}
nodeStatusReportFrequency: 0s
nodeStatusUpdateFrequency: 0s
rotateCertificates: true
runtimeRequestTimeout: 0s
shutdownGracePeriod: 0s
shutdownGracePeriodCriticalPods: 0s
staticPodPath: /opt/kubernetes/manifests
streamingConnectionIdleTimeout: 0s
syncFrequency: 0s
volumeStatsAggPeriod: 0s
imageRepository: registry.aliyuncs.com/google_containers
  • clusterDNS:CoreDNSのサービスIPアドレスを設定します。後で CoreDNS をインストールする場合は、この変数の値と一致している必要があります。

2.2 kubelet.conf設定の作成

KUBELET_OPTS="--kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig \
--bootstrap-kubeconfig=/opt/kubernetes/cfg/kubelet-bootstrap.kubeconfig \
--config=/opt/kubernetes/cfg/kubelet-config.yaml \
--cgroup-driver=systemd \
--container-runtime=remote \
--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause:3.6 \
--containtim6-endpoint=/var/run/cri-dockerd.sock \
--cert-dir=/opt/kubernetes/ssl"

2.3 kubelet 用の systemctl 起動サービスの作成

cat > /usr/lib/systemd/system/kubelet.service <<EOF
[Unit]
Description=Kubernetes Kubelet
After=docker.service

[Service]
EnvironmentFile=/opt/kubernetes/cfg/kubelet.conf
ExecStart=/opt/kubernetes/server/bin/kubelet \$KUBELET_OPTS
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF                  

2.4 kubeletサービスの開始

systemctl enable kubelet
systemctl start kubelet

2.5 kubelet サービスのステータスの表示

systemctl status kubelet

ここに画像の説明を挿入

3.kube-proxyをインストールする

3.1 kube-proxy-kubeconfig.sh スクリプトを作成する

#!/bin/sh

KUBE_APISERVER="https://192.168.0.110:8443"

kubectl config set-cluster kubernetes \
  --certificate-authority=/etc/kubernetes/ssl/ca.pem \
  --embed-certs=true \
  --server=${KUBE_APISERVER} \
  --kubeconfig=kube-proxy.kubeconfig

kubectl config set-credentials "kube-proxy" \
  --client-certificate=/etc/kubernetes/ssl/kube-proxy.pem \
  --client-key=/etc/kubernetes/ssl/kube-proxy-key.pem \
  --embed-certs=true \
  --kubeconfig=kube-proxy.kubeconfig

kubectl config set-context default \
  --cluster=kubernetes \
  --user="kube-proxy" \
  --kubeconfig=kube-proxy.kubeconfig

kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig

3.2 kube-proxy-kubeconfig.sh スクリプトを実行する

chmod +x kube-proxy-kubeconfig.sh
sh kube-proxy-kubeconfig.sh

3.3 kube-proxy-config.yaml 構成の作成

cat > /opt/kubernetes/cfg/kube-proxy-config.yaml <<EOF
apiVersion: kubeproxy.config.k8s.io/v1alpha1
bindAddress: 0.0.0.0
clientConnection:
  kubeconfig: /opt/kubernetes/cfg/kube-proxy.kubeconfig
clusterCIDR: 172.16.0.0/16
healthzBindAddress: 0.0.0.0:10256
kind: KubeProxyConfiguration
hostnameOverride: k8s-node1
metricsBindAddress: 0.0.0.0:10249
mode: "ipvs"
enableProfiling: true
EOF
  • clusterCIDR: Kubernetes ポッドの IP アドレス範囲を設定します。これは、K8S インストール プロセスの第 8章「Kubernetes マスター ノードのインストール 5.3」の--cluster-cidr変数と一致している必要があります。
  • hostnameOverride: ノードの名前を設定します。この値はマシン名と一致することをお勧めします。

3.4 kube-proxy.conf ファイルの作成

KUBE_PROXY_OPTS="--logtostderr=false \
--v=4 \
--log-dir=/var/log/kubernetes \
--config=/opt/kubernetes/cfg/kube-proxy-config.yaml"

3.5 kube-proxy の systemctl スタートアップ サービスの作成

cat > /usr/lib/systemd/system/kube-proxy.service <<EOF
[Unit]
Description=Kubernetes Proxy
After=network.target

[Service]
EnvironmentFile=/opt/kubernetes/cfg/kube-proxy.conf
ExecStart=/opt/kubernetes/server/bin/kube-proxy \$KUBE_PROXY_OPTS
Restart=on-failure
RestartSec=10
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF

3.6 kube-proxy サービスの開始

systemctl enable kube-proxy
systemctl start kube-proxy

3.7 kube-proxy サービスのステータスの表示

systemctl status kube-proxy

ここに画像の説明を挿入

4 ビューノード

kubernetes マスター ノードにログインし、kubectl コマンド ツールを使用してノードのステータスを表示し、次のコマンドを使用して表示します。もう一度強調しますが、Kubernetes マスター ノードにログインして次のコマンドを実行します。

kubectl get nodes

ノードがクラスタに参加しているか、ノードの状態がNotReadyになっているかを確認します。CNI ネットワーク プラグインはまだインストールされていないため、kubernetes ワーカー ノードのステータスはインストールされているはずです。NotReady 状態の場合、後続の Kubernetes CNI プラグインのインストール後、基本的にクラスターがインストールされ、Kubernetes ワーカー ノードの状態は Ready 状態に変わります。

おすすめ

転載: blog.csdn.net/hzwy23/article/details/128087101