k8s二进制安装api-server安装

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s二进制安装api-server安装相关的知识,希望对你有一定的参考价值。

参考技术A 开始是一个master,两个node节点,后面再扩。

使用centos7系统,前面文章已经安装过etcd。

wget https://dl.k8s.io/v1.21.10/kubernetes-server-linux-amd64.tar.gz

tar -zxf kubernetes-server-linux-amd64.tar.gz

cd kubernetes/server/bin/

cp kube-apiserver kubectl kube-controller-manager kube-scheduler /usr/local/bin

scp kubelet kube-proxy FNSHB109:/usr/local/bin

scp kubelet kube-proxy node1:/usr/local/bin

scp kubelet kube-proxy node2:/usr/local/bin

mkdir -p /etc/kubernetes

mkdir -p /etc/kubernetes/ssl

mkdir -p /var/log/kubernetes

一个应用程序访问https API(自签证书),有两种方式,证书添加IP可信任(写在证书的json的host文件里面)和携带CA证书。ca证书在etcd那篇文章里面已经配置过,这里直接配置kube-apiserver-csr.json请求文件,再利用ca证书和私钥,形成kube-apiserver证书。

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kube-apiserver-csr.json | cfssljson -bare kube-apiserver

随机生成序列号,并定义token.csv

kubelet 采用 TLS Bootstrapping 机制,自动完成到 kube-apiserver 的注册,在 node 节点量较大或者后期自动扩容时非常有用。
Master apiserver 启用 TLS 认证后,node 节点 kubelet 组件想要加入集群,必须使用CA签发的有效证书才能与 apiserver 通信,当 node 节点很多时,签署证书是一件很繁琐的事情。因此 Kubernetes 引入了 TLS bootstraping 机制来自动颁发客户端证书,kubelet 会以一个低权限用户自动向 apiserver 申请证书,kubelet 的证书由 apiserver 动态签署。

kubelet 首次启动通过加载 bootstrap.kubeconfig 中的用户 Token 和 apiserver CA 证书发起首次 CSR 请求,这个 Token 被预先内置在 apiserver 节点的 token.csv 中,其身份为 kubelet-bootstrap 用户和 system:kubelet-bootstrap 用户组;想要首次 CSR 请求能成功(即不会被 apiserver 401 拒绝),则需要先创建一个 ClusterRoleBinding,将 kubelet-bootstrap 用户和 system:node-bootstrapper 内置 ClusterRole 绑定(通过 kubectl get clusterroles 可查询),使其能够发起 CSR 认证请求。

TLS bootstrapping 时的证书实际是由 kube-controller-manager 组件来签署的,也就是说证书有效期是 kube-controller-manager 组件控制的;kube-controller-manager 组件提供了一个 --experimental-cluster-signing-duration 参数来设置签署的证书有效时间;默认为 8760h0m0s,将其改为 87600h0m0s,即 10 年后再进行 TLS bootstrapping 签署证书即可。

也就是说 kubelet 首次访问 API Server 时,是使用 token 做认证,通过后,Controller Manager 会为 kubelet 生成一个证书,以后的访问都是用证书做认证了。

cd /root/k8sbinary/TLS/k8s

cp /root/k8sbinary/TLS/k8s/token.csv /etc/kubernetes/ssl

cp /root/k8sbinary/TLS/k8s/ca*.pem /etc/kubernetes/ssl

cp /root/k8sbinary/TLS/k8s/kube-api*.pem /etc/kubernetes/ssl

scp ca*.pem node1:/etc/kubernetes/ssl

scp ca*.pem node2:/etc/kubernetes/ssl

scp /root/k8sbinary/TLS/k8s/token.csv node1:/etc/kubernetes/ssl

scp /root/k8sbinary/TLS/k8s/token.csv node1:/etc/kubernetes/ssl

systemctl daemon-reload

systemctl enable kube-apiserver

systemctl start kube-apiserver

systemctl status kube-apiserver

以上是关于k8s二进制安装api-server安装的主要内容,如果未能解决你的问题,请参考以下文章

K8s二进制安装之ETCD错误

K8S二进制安装

二进制安装K8s集群

二进制安装K8s集群

Docker&K8s---跟我一步步部署K8s(二进制安装部署)

Docker&K8s---跟我一步步部署K8s(二进制安装部署)