"/>
侧边栏壁纸
博主头像
PySuper 博主等级

千里之行,始于足下

  • 累计撰写 218 篇文章
  • 累计创建 15 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

Kubernetes入门(五)-- 部署Master节点

PySuper
2020-06-15 / 0 评论 / 0 点赞 / 10 阅读 / 0 字
温馨提示:
本文最后更新于2024-05-28,若内容或图片失效,请留言反馈。 所有牛逼的人都有一段苦逼的岁月。 但是你只要像SB一样去坚持,终将牛逼!!! ✊✊✊

为APIServer签发证书

在部署master节点之前,我们需要先未master节点上的APIServer签发证书,实现https访问APIServer

vim /k8sfiles/TLS/k8s/server-csr.json

"172.16.23.31",
"172.16.23.32",
"172.16.23.41",
"172.16.23.42",
"172.16.23.43",
"172.16.23.51",
"172.16.23.52",
"172.16.23.53",
"172.16.23.61",
"172.16.23.62",
"172.16.23.63"

# 执行脚本签发证书
./generater_k8s_cert.sh

部署master服务

  • 文件准备
tar xvf k8s-master.tar.gz

sudo mv kube-apiserver.service kube-controller-manager.service kube-scheduler.service /usr/lib/systemd/system/

sudo mv kubernetes /opt/

cp ../TLSK8s/{ca*pem,server.pem,server-key.pem} /opt/kubernetes/ssl -rvf
  • 修改apiserver的配置文件
# sudo vim /opt/kubernetes/cfg/kube-apiserver.conf

# 日志相关
KUBE_APISERVER_OPTS="--logtostderr=false \    # 是否在终端打印日志
--v=2 \    # 日志的级别(越高信息越全)
--log-dir=/opt/kubernetes/logs \    # 日志保存的位置

# service相关
--etcd-servers=https://172.16.23.51:2379,https://172.16.23.61:2379,https://172.16.23.62:2379 \    # etcd的访问地址
--bind-address=172.16.23.51 \    # apiserver绑定的地址,当前master节点监听的IP
--secure-port=6443 \    # 当前master节点监听的端口
--advertise-address=172.16.23.51 \    # apiserver的通告地址(一般和绑定的地址一样)
--allow-privileged=true \    # 是否使用超级管理员权限创建容器
--service-cluster-ip-range=10.0.0.0/24 \    # service服务的虚拟网段
--enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,NodeRestriction \    # 允许使用哪些插件
--authorization-mode=RBAC,Node \    # 授权模式(RBAC-基于角色授权,Node-基于节点授权)
--enable-bootstrap-token-auth=true \    # 使用token的形式颁发证书完成认证(节点比较多的时候)
--token-auth-file=/opt/kubernetes/cfg/token.csv \    # 使用bootstrap颁发证书时基于特定用户,这里保存了特定用户的用户名(token,用户名,过期时间,"用户所在的名称空间")
--service-node-port-range=30000-32767 \    # service暴露的端口范围

# 证书相关
# 访问kubelet时的证书
--kubelet-client-certificate=/opt/kubernetes/ssl/server.pem \
--kubelet-client-key=/opt/kubernetes/ssl/server-key.pem \
# 使用https访问apiserver时的证书
--tls-cert-file=/opt/kubernetes/ssl/server.pem  \
--tls-private-key-file=/opt/kubernetes/ssl/server-key.pem \
--client-ca-file=/opt/kubernetes/ssl/ca.pem \
--service-account-key-file=/opt/kubernetes/ssl/ca-key.pem \
# 访问etcd时的证书
--etcd-cafile=/opt/etcd/ssl/ca.pem \
--etcd-certfile=/opt/etcd/ssl/server.pem \
--etcd-keyfile=/opt/etcd/ssl/server-key.pem \

# 日志相关
--audit-log-maxage=30 \    # 日志文件的最大的大小
--audit-log-maxbackup=3 \
--audit-log-maxsize=100 \
--audit-log-path=/opt/kubernetes/logs/k8s-audit.log"
  • 修改controller-manage的配置文件

通常没有需要改的东西,不修改

# sudo vim /opt/kubernetes/cfg/kube-controller-manager.conf

KUBE_CONTROLLER_MANAGER_OPTS="--logtostderr=false \
--v=2 \
--log-dir=/opt/kubernetes/logs \
--leader-elect=true \    # 有多个apiserver时,自动选举一个作为master apiserver
--master=127.0.0.1:8080 \    # apiserver的IP地址
--address=127.0.0.1 \    # 当前监听的IP地址(需要外部访问的时候需要修改为可访问的IP地址)
--allocate-node-cidrs=true \    # 是否支持CNI网络插件
--cluster-cidr=10.244.0.0/16 \    # 基于CNI网络插件分配的IP地址网段
--service-cluster-ip-range=10.0.0.0/24 \    # 给客户端分配地址时的地址范围
--cluster-signing-cert-file=/opt/kubernetes/ssl/ca.pem \
--cluster-signing-key-file=/opt/kubernetes/ssl/ca-key.pem  \
--root-ca-file=/opt/kubernetes/ssl/ca.pem \
--service-account-private-key-file=/opt/kubernetes/ssl/ca-key.pem \
--experimental-cluster-signing-duration=87600h0m0s"    # 证书的有效期
  • scheduler配置文件
# sudo vim /opt/kubernetes/cfg/kube-scheduler.conf

KUBE_SCHEDULER_OPTS="--logtostderr=false \
--v=2 \
--log-dir=/opt/kubernetes/logs \
--leader-elect \
--master=127.0.0.1:8080 \
--address=127.0.0.1"

启动master

# 启动
sudo systemctl start kube-apiserver

# 开启自启动
sudo systemctl enable kube-apiserver

sudo systemctl start kube-controller-manager
sudo systemctl enable kube-controller-manager

sudo systemctl start kube-scheduler
sudo systemctl enable kube-scheduler

# 验证
ps aux | grep kube

# -->4
ps aux | grep kube | wc -l
tail -f /opt/kubernetes/logs/kube-apiserver.INFO
tail -f /opt/kubernetes/logs/kube-controller-manager.INFO
tail -f /opt/kubernetes/logs/kube-scheduler.INFO

# 运行管理工具
/opt/kubernetes/bin/kubectl get cs
sudo cp /opt/kubernetes/bin/kubectl /bin/

# 查看集群节点状态信息
kubectl get cs
  • 配置tls基于bootstrap自动颁发证书

apiserver的配置文件中,对/opt/kubernetes/cfg/token.csv中的用户授权

--enable-bootstrap-token-auth=true \    # 使用token的形式颁发证书完成认证(节点比较多的时候)
--token-auth-file=/opt/kubernetes/cfg/token.csv \    # 使用bootstrap颁发证书时基于特定用户,这里保存了特定用户的用户名(token,用户名,过期时间,"用户所在的名称空间")

# 授权
# kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap
0

评论区