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安装的主要内容,如果未能解决你的问题,请参考以下文章