kubernetes Node节点包含如下组件:
- etcd
- flannel
- docker
- kubelet
- kube-proxy
导入环境变量
$ source /root/local/bin/environment.sh
安装和配置kubelet
下载二进制文件
从CHANGELOG页面下载server tarball文件
$ wget https://dl.k8s.io/v1.10.0/kubernetes-server-linux-amd64.tar.gz
$ tar -xzvf kubernetes-server-linux-amd64.tar.gz
$ sudo cp -r kubernetes/server/bin/{kube-proxy,kubelet,kubectl} /root/local/bin/
kubelet启动时会向kube-apiserver发送TLS bootstrapping请求,需要先将bootstrap token文件中的kubelet-bootstrap用户赋予system:node-bootstrapper角色,然后kubelet才有权限创建认证请求:
$ kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap
–user=kubelet-bootstrap是文件/etc/kubernetes/token.csv 中指定的用户名,同时也写入了文件/etc/kubernetes/bootstrap.kubeconfig;
创建kubelet bootstrapping kubeconfig文件
# 设置集群参数
$ kubectl config set-cluster kubernetes \
--certificate-authority=/etc/kubernetes/ssl/ca.pem \
--embed-certs=true \
--server=${
KUBE_APISERVER} \
--kubeconfig=bootstrap.kubeconfig
# 设置客户端认证参数
$ kubectl config set-credentials kubelet-bootstrap \
--token=${
BOOTSTRAP_TOKEN} \
--kubeconfig=bootstrap.kubeconfig
# 设置上下文参数
$ kubectl config set-context default \
--cluster=kubernetes \
--user=kubelet-bootstrap \
--kubeconfig=bootstrap.kubeconfig
# 设置默认上下文
$ kubectl config use-context default --kubeconfig=bootstrap.kubeconfig
$ mv bootstrap.kubeconfig /etc/kubernetes/
- –embed-certs为true时表示将certificate-authority证书写入到生成的bootstrap.kubeconfig文件中;
- 设置kubelet客户端认证参数时没有指定秘钥和证书,后续由kube-apiserver自动生成;