kebe-apiserver部署

创建config配置文件

注意:请先参考 安装kubectl命令行工具,先在 master 节点上安装 kubectl 然后再进行下面的操作。

kubelet、kube-proxy 等 Node 机器上的进程与 Master 机器的 kube-apiserver 进程通信时需要认证和授权;

kubernetes 1.4 开始支持由 kube-apiserver 为客户端生成 TLS 证书的 TLS Bootstrapping 功能,这样就不需要为每个客户端生成证书了;该功能当前仅支持为 kubelet 生成证书;

因为我的master节点和node节点复用,所有在这一步其实已经安装了kubectl。参考安装kubectl命令行工具。

以下操作只需要在master节点上执行,生成的*.kubeconfig文件可以直接拷贝到node节点的/etc/kubernetes目录下。

创建 TLS Bootstrapping Token

Token可以是任意的包含128 bit的字符串,可以使用安全的随机数发生器生成。

export BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ' ')
cat > bootstrap-token.csv <<EOF
${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kubelet-bootstrap"
EOF
mv bootstrap-token.csv /etc/kubernetes/ssl/
scp /etc/kubernetes/ssl/bootstrap-token.csv ${node02ip}:/etc/kubernetes/ssl/
scp /etc/kubernetes/ssl/bootstrap-token.csv ${node03ip}:/etc/kubernetes/ssl/

创建访问用户

参数--bacis-auth-file在16版本已经提示,将被移除

cat >>  basic-auth.csv  << EOF
admin,admin,1
readonly,readonly,2
# password,usernmae,uid
EOF
mv basic-auth.csv /etc/kubernetes/ssl/
scp /etc/kubernetes/ssl/basic-auth.csv ${node02ip}:/etc/kubernetes/ssl/
scp /etc/kubernetes/ssl/basic-auth.csv ${node03ip}:/etc/kubernetes/ssl/

加了参数后测试

curl https://${node01ip}:6443/apis/metrics.k8s.io/v1beta1/nodes -k --basic -u admin:admin

创建kube-apiserver.service

mkdir -p /var/log/kubernetes/
cat >> kube-apiserver.service << \EOF
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.target

[Service]
ExecStart=/usr/local/bin/kube-apiserver   \
--bind-address=0.0.0.0  \
--authorization-mode=Node,RBAC   \
--runtime-config=rbac.authorization.k8s.io/v1   \
--anonymous-auth=false   \
--enable-bootstrap-token-auth   \
--token-auth-file=/etc/kubernetes/ssl/bootstrap-token.csv   \
--service-cluster-ip-range=10.96.0.0/16   \
--tls-cert-file=/etc/kubernetes/ssl/kubernetes.pem   \
--tls-private-key-file=/etc/kubernetes/ssl/kubernetes-key.pem   \
--client-ca-file=/etc/kubernetes/ssl/ca.pem   \
--service-account-key-file=/etc/kubernetes/ssl/ca-key.pem   \
--etcd-cafile=/etc/kubernetes/ssl/ca.pem   \
--etcd-certfile=/etc/kubernetes/ssl/kubernetes.pem   \
--etcd-keyfile=/etc/kubernetes/ssl/kubernetes-key.pem   \
--etcd-servers=https://10.10.10.5:2379,https://10.10.10.6:2379,https://10.10.10.7:2379  \
--allow-privileged=true   \
--audit-log-maxage=30   \
--audit-log-maxbackup=3   \
--audit-log-maxsize=100   \
--audit-log-path=/var/log/kubernetes/api-audit.log   \
--event-ttl=1h   \
--v=0   \
--logtostderr=false   \
--log-dir=/var/log/kubernetes/   \
--proxy-client-cert-file=/etc/kubernetes/ssl/kube-proxy.pem \
--proxy-client-key-file=/etc/kubernetes/ssl/kube-proxy-key.pem \
--requestheader-client-ca-file=/etc/kubernetes/ssl/ca.pem \
--requestheader-allowed-names=front-proxy-client \
--requestheader-group-headers=X-Remote-Group \
--requestheader-extra-headers-prefix=X-Remote-Extra- \
--requestheader-username-headers=X-Remote-User \
--service-node-port-range=30000-32767
Restart=on-failure
RestartSec=5
Type=notify
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF
sed -i "s#10.10.10.5#${node01ip}#g" kube-apiserver.service
sed -i "s#10.10.10.6#${node02ip}#g" kube-apiserver.service
sed -i "s#10.10.10.7#${node03ip}#g" kube-apiserver.service
mv kube-apiserver.service /usr/lib/systemd/system/
ssh ${node02ip} mkdir -p /var/log/kubernetes/
ssh ${node03ip} mkdir -p /var/log/kubernetes/
# 如果多个master
scp  /usr/lib/systemd/system/kube-apiserver.service ${node02ip}:/usr/lib/systemd/system/
scp  /usr/lib/systemd/system/kube-apiserver.service ${node03ip}:/usr/lib/systemd/system/

参数解释

  • 注意点,线上的--bind-address绑定的必须使用内网ip
  • 线上--v=0 日志级别根据自己的需求进行修改
  • kubernetesservicenodePort默认使用端口号是30000-32767,如果有需要可以自己的需求进行配置指定
  • --etcd-servers指定etcd的服务端,进行访问,其中不能有引号,因为会导致,的分隔符不被承认,然后报错,把整个引号当成了一个整体
  • --service-cluster-ip-range定制serviceip网段,根据自己网络需求,进行修改

启动kube-apiserver

systemctl daemon-reload
systemctl enable kube-apiserver
systemctl start kube-apiserver
systemctl status kube-apiserver

1.20 版本

注意: 其中1.20版本强制需要两个参数,--service-account-signing-key-file --service-account-issuer

--service-account-key-file=/etc/kubernetes/ssl/sa.pub \
--service-account-signing-key-file=/etc/kubernetes/ssl/sa.key \
--service-account-issuer=https://kubernetes.default.svc.cluster.local \

其中生成rsa的证书命令,在生成证书的章节可以看到

Copyright © hankbook.cn 2020 all right reserved,powered by Gitbook该文件修订时间: 2022-08-08 09:48:50

results matching ""

    No results matching ""