install_kubelet.sh
  1. #!/bin/sh
  2. ROOT=$(cd `dirname $0`/../&&pwd)
  3. BIN_DIR=/usr/local/bin
  4. # kubelet 启动时向 kube-apiserver 发送 TLS bootstrapping 请求,
  5. # 需要先将 bootstrap token 文件中的 kubelet-bootstrap 用户赋予 system:node-bootstrapper 角色,
  6. # 然后 kubelet 才有权限创建认证请求(certificatesigningrequests)
  7. kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap
  8. # 设置集群参数
  9. kubectl config set-cluster kubernetes \
  10. --certificate-authority=/etc/kubernetes/ssl/ca.pem \
  11. --embed-certs=true \
  12. --server=${KUBE_APISERVER} \
  13. --kubeconfig=bootstrap.kubeconfig
  14. # 设置客户端认证参数
  15. kubectl config set-credentials kubelet-bootstrap \
  16. --token=${BOOTSTRAP_TOKEN} \
  17. --kubeconfig=bootstrap.kubeconfig
  18. # 设置上下文参数
  19. kubectl config set-context default \
  20. --cluster=kubernetes \
  21. --user=kubelet-bootstrap \
  22. --kubeconfig=bootstrap.kubeconfig
  23. # 设置默认上下文
  24. kubectl config use-context default --kubeconfig=bootstrap.kubeconfig
  25. mv bootstrap.kubeconfig /etc/kubernetes/
  26. mkdir /var/lib/kubelet # 必须先创建工作目录
  27. # 创建 kubelet 的 systemd unit 文件
  28. sh replace_env_variables.sh -s kubelet
  29. # 启动 kubelet
  30. systemctl daemon-reload
  31. systemctl enable kubelet
  32. systemctl start kubelet
  33. systemctl status kubelet
  34. sleep 10
  35. # 通过 kubelet 的 TLS 证书请求
  36. kubectl get csr | grep -e 'csr-.*Pending$' | awk -F' ' '{print $1}' | xargs -I {} kubectl certificate approve {}