前提条件
K8Sのインストールプロセスの最初の7つのプロセスのインストールが完了しました。
- すべての証明書は /etc/kubernetes/ssl ディレクトリに保存されます
- すべての kubernetes 構成は /opt/kubernetes/cfg ディレクトリに保存されます
これら 2 つのディレクトリが空であることが判明した場合は、上記の内容を kubernetes ノードから現在のノードの対応するディレクトリの場所にコピーしてください。
1. インストールパッケージを入手します
このファイルは、 K8Sインストール プロセス 8: Kubernetes マスター ノードのインストールkubernetes.tar.gz
8.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"
--bootstrap-kubeconfig
: K8S インストールプロセス 8: Kubernetes マスターノードのインストール のセクション 8.2 で生成された設定ファイルに設定します。
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 状態に変わります。