Kubernetes部署通用手册 (支持版本1.19,1.18,1.17,1.16) (8)

最终生成以下证书文件:

ls -l /data/www/api-cert/*pem -rw------- 1 www www 1675 Apr 19 21:34 /data/www/api-cert/api-ca-key.pem -rw-rw-r-- 1 www www 1363 Apr 19 21:34 /data/www/api-cert/api-ca.pem -rw------- 1 www www 1679 Apr 19 21:36 /data/www/api-cert/kube-proxy-key.pem -rw-rw-r-- 1 www www 1407 Apr 19 21:36 /data/www/api-cert/kube-proxy.pem -rw------- 1 www www 1679 Apr 19 21:35 /data/www/api-cert/api-server-key.pem -rw-rw-r-- 1 www www 1667 Apr 19 21:35 /data/www/api-cert/api-server.pem 将二进制文件解压拷贝到master 节点 tar -xvf kubernetes-server-linux-amd64.tar.gz cd kubernetes/server/bin/ cp kube-scheduler kube-apiserver kube-controller-manager kubectl /data/soft/kubernetes/bin/

拷贝认证

cp /data/www/api-cert/*pem /data/soft/kubernetes/ssl/ 部署 kube-apiserver 组件

创建 TLS Bootstrapping Token

# 生成随机字符串 # head -c 16 /dev/urandom | od -An -t x | tr -d ' ' 2366a641f656a0a025abb4aabda4511b vim /data/soft/kubernetes/cfg/token.csv 2366a641f656a0a025abb4aabda4511b,kubelet-bootstrap,10001,"system:kubelet-bootstrap" # token.csv是kubelet加入集群时候颁发证书使用 第一列:随机字符串,自己可生成 第二列:用户名 第三列:UID 第四列:用户组

创建apiserver配置文件

vim /data/soft/kubernetes/cfg/kube-apiserver KUBE_APISERVER_OPTS="--logtostderr=true \ --v=4 \ --etcd-servers=https://192.168.0.10:2379,https://192.168.0.12:2379,https://192.168.0.4:2379 \ --bind-address=192.168.0.10 \ --secure-port=6443 \ --advertise-address=192.168.0.10 \ --allow-privileged=true \ --service-cluster-ip-range=10.0.0.0/24 \ --enable-admission-plugins=NamespaceLifecycle,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota,NodeRestriction \ --authorization-mode=RBAC,Node \ --enable-bootstrap-token-auth \ --token-auth-file=http://www.likecs.com/data/soft/kubernetes/cfg/token.csv \ --service-node-port-range=30000-50000 \ --tls-cert-file=http://www.likecs.com/data/soft/kubernetes/ssl/api-server.pem \ --tls-private-key-file=http://www.likecs.com/data/soft/kubernetes/ssl/api-server-key.pem \ --client-ca-file=http://www.likecs.com/data/soft/kubernetes/ssl/api-ca.pem \ --service-account-key-file=http://www.likecs.com/data/soft/kubernetes/ssl/api-ca-key.pem \ --etcd-cafile=http://www.likecs.com/data/soft/etcd/ssl/etcd-ca.pem \ --etcd-certfile=http://www.likecs.com/data/soft/etcd/ssl/etcd-server.pem \ --etcd-keyfile=http://www.likecs.com/data/soft/etcd/ssl/etcd-server-key.pem"

配置好前面生成的etcd证书,确保能连接etcd,apiserver要随时去向etcd存取集群数据。

参数说明( 号代表通配符说明参数相同的有多个):*

--advertise-address:apiserver 对外通告的 IP(kubernetes 服务后端节点 IP);

--default-*-toleration-seconds:设置节点异常相关的阈值;

--max-*-requests-inflight:请求相关的最大阈值;

--etcd-*:访问 etcd 的证书和 etcd 服务器地址;

--bind-address: https 监听的 IP,不能为 127.0.0.1,否则外界不能访问它的安全端口 6443;

--secret-port:https 监听端口;

--insecure-port=0:关闭监听 http 非安全端口(8080);

--tls-*-file:指定 apiserver 使用的证书、私钥和 CA 文件;

--audit-*:配置审计策略和审计日志文件相关的参数;

--client-ca-file:验证 client (kue-controller-manager、kube-scheduler、kubelet、kube-proxy 等)请求所带的证书;

--enable-bootstrap-token-auth:启用 kubelet bootstrap 的 token 认证;

--requestheader-*:kube-apiserver 的 aggregator layer 相关的配置参数,proxy-client & HPA 需要使用;

--requestheader-client-ca-file:用于签名 --proxy-client-cert-file 和 --proxy-client-key-file 指定的证书;在启用了 metric aggregator 时使用;

--requestheader-allowed-names:不能为空,值为逗号分割的 --proxy-client-cert-file 证书的 CN 名称,这里设置为 "aggregator";

--service-account-key-file:签名 ServiceAccount Token 的公钥文件,kube-controller-manager 的 --service-account-private-key-file 指定私钥文件,两者配对使用;

--runtime-config=api/all=true: 启用所有版本的 APIs,如 autoscaling/v2alpha1;

--authorization-mode=Node,RBAC、--anonymous-auth=false: 开启 Node 和 RBAC 授权模式,拒绝未授权的请求;

--enable-admission-plugins:启用一些默认关闭的 plugins;

--allow-privileged:运行执行 privileged 权限的容器;

--apiserver-count=3:指定 apiserver 实例的数量;

--event-ttl:指定 events 的保存时间;

--kubelet-*:如果指定,则使用 https 访问 kubelet APIs;需要为证书对应的用户(上面 kubernetes*.pem 证书的用户为 kubernetes) 用户定义 RBAC 规则,否则访问 kubelet API 时提示未授权;

--proxy-client-*:apiserver 访问 metrics-server 使用的证书;

--service-cluster-ip-range: 指定 Service Cluster IP 地址段;

--service-node-port-range: 指定 NodePort 的端口范围;

如果 kube-apiserver 机器没有运行 kube-proxy,则还需要添加 --enable-aggregator-routing=true 参数;

关于 --requestheader-XXX 相关参数,参考:

https://github.com/kubernetes-incubator/apiserver-builder/blob/master/docs/concepts/auth.md

https://docs.bitnami.com/kubernetes/how-to/configure-autoscaling-custom-metrics/

注意:

--requestheader-client-ca-file 指定的 CA 证书,必须具有 client auth and server auth;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppjyp.html