二進制安裝k8s集群(12)-安裝kubelet

上一篇文章里我們主要介紹master組件kube-scheduler的安裝,這裡我們開始介紹安裝worker組件kubelet,我們採用下載二進制binary製作linux systemd的方式安裝。這個組件也在下載的kubenetes包里(1.15.1版本),在以前文章里已經下載過(要科學上網或者搭個梯子),這裡就不再重複。另外kubelet與kube-apiserver交互我們開啟ssl,所以請提前製作好相關ssl證書(可以參考以前文章里製作docker的證書),並copy到配置目錄里。

copy二進制文件:

cp /opt/sw/kubernetes/install/kubernetes/server/bin/kubelet /usr/bin/  whereis kubelet

創建配置目錄:

kubelet和kube-apiserver會相互通訊,相互作為client端與server端。這裡kubelet作為server端的時候開啟ssl,請提前製作好相應的ssl證書並copy到配置目錄里。

mkdir -p /etc/kubernetes/kubelet  mkdir -p /etc/kubernetes/kubelet/cert  touch  /etc/kubernetes/kubelet/k8s-kubelet.conf

創建配置文件:

kubelet需要和kube-apiserver交互,這個交互可以利用kubeconfig文件做為配置文件。所以與kube-controller-manager一樣,我們可以利用在kubectl安裝過程中我們創建的kubeconfig文件。同時kubelet負責創建銷毀pod,要為pod配置基礎鏡像,這裡設置為私有repo的public項目中的

172.20.11.41:1034/infra-pub/registry.access.redhat.com-rhel7-pod-infrastructure:latest(已經在以前文章里我們push到private repo中)。

cat >  /etc/kubernetes/kubelet/k8s-kubelet.conf<<EOF  KUBELET_ADDRESS="--address=0.0.0.0 --port=10250"  KUBELET_TLS="--tls-cert-file=/etc/kubernetes/kubelet/cert/k8skubelet-server.crt --tls-private-key-file=/etc/kubernetes/kubelet/cert/k8skubelet-server.key"  KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=172.20.11.41:1034/infra-pub/registry.access.redhat.com-rhel7-pod-infrastructure:latest"  KUBELET_KUBE_CONFIG="--kubeconfig=/etc/kubernetes/kubeconfig/config"  KUBELET_CLUSTER="--cluster-dns=10.254.10.2 --cluster-domain=cluster.local"  KUBELET_ARGS="--fail-swap-on=false --hostname-override=172.20.11.43"  EOF    source /etc/kubernetes/kubelet/k8s-kubelet.conf

創建systemd unit文件:

touch /usr/lib/systemd/system/kubelet.service    cat > /usr/lib/systemd/system/kubelet.service<<EOF  [Unit]  Description=Kubernetes Kubelet Service  After=network.target network-online.target docker.service  Wants=network-online.target docker.service    [Service]  Type=simple  EnvironmentFile=-/etc/kubernetes/kubelet/k8s-kubelet.conf  ExecStartPre=-source /etc/kubernetes/kubelet/k8s-kubelet.conf  ExecStart=/usr/bin/kubelet   ${KUBELET_ADDRESS}   ${KUBELET_TLS}   ${KUBELET_POD_INFRA_CONTAINER}   ${KUBELET_KUBE_CONFIG}   ${KUBELET_CLUSTER}   ${KUBELET_ARGS}    Restart=on-failure  LimitNOFILE=65536    [Install]  WantedBy=multi-user.target  EOF    source /etc/kubernetes/kubelet/k8s-kubelet.conf  cat /usr/lib/systemd/system/kubelet.service

reload服務並設置開機啟動:

systemctl daemon-reload  systemctl enable kubelet

啟動服務並檢查狀態:

systemctl start kubelet  systemctl status kubelet