简述 K8s 集群搭建步骤
约 647 字大约 2 分钟
简述 K8s 集群搭建步骤
preinstall:安装前准备
- 关闭 swap 分区
- 更换 yum 源、安装 依赖包
- 更新 系统版本 到 centos 7.9、内核版本 到 长期支持版本 kernel-lt 5.4.196
- 如果硬件网卡驱动不支持新版本内核,升级 网卡驱动, 针对新内核重新编译
- 调节 CPU 性能模式为高性能
- 禁用防火墙、SELINUX
- 修改内核参数、加载 br_netfilter、ip_conntrack、ipvs 等 modules
- 配置时间同步
- 重启服务器,使用内核生效
- 检查 内核版本
- 检查 hostname 是否符合 DNS 规范
- 检查 kube_service_addresses 和 kube_pods_subnet 是否为正确的网络段
- 检查 kube_service_addresses 和 kube_pods_subnet 的网段是否冲突
- 检查时间是否同步
- 检查 访问外网的连通性(DNS配置是否正确)
docker:安装Docker
- 更换 yum 下载源
- 安装 docker 和相关依赖
- 新增配置目录,拷贝配置文件
- 启动并加入开机自启
master: 安装 master
- 更换 yum 下载源
- 下载 kubelet、kubeadm、kubectl 等
- 下载 kube-apiserver、kube-controller-manager、kube-scheduler、kube-proxy、pause、etcd、coredns 等镜像
- 启动 kubelet 服务
- 配置 kubeadm-config.yml 初始化配置文件
- 使用
kubeadm init
进行初始化 - master1 生成 certificate key
- 其余master 使用
kubeadm join
加入master集群
haproxy + keepalived
实现master高可用,负载均衡
ha:使用 先申请vip
- 安装 keepalived 、 haproxy
- 重定向日志文件
- keepalived 新增监控检查脚本
- 配置keepalived、haproxy
- 启动 keepalived、haproxy ,并配置开机自启
calico:安装配置 Calico BGP RR模型
提前设置好 LOCAL_AS、AS_NUMBER、PEER_IP,安装好后还需要网络设置一下,BGP做宣告加邻居等
- 拷贝官方 yaml 文件
- 替换 PODSUBNET
- 设置 NIC 为 bond4 或 eth0
- apply calico yaml 文件
- 安装 并配置 calicoctl 工具
- 拷贝 设置 为 BGP RR 模式 的一些列 yaml 文件
- 使用 calicoctl apply 上面的yaml文件
node:安装 node
- 步骤和 master 2,3 安装类似,下镜像,生成凭证,
kubeadm join
Master 节点缩容
# 删除 Master 节点
kubectl drain st-kubernetes-master-4 --delete-local-data --force --ignore-daemonsets
kubectl delete node st-kubernetes-master-4
ETCDCTL_API=3 etcdctl --cacert="${ETCD_CA_CERT}" --cert="${ETCD_CERT}" --key="${ETCD_KEY}" --endpoints="${HOST_1}" member list
ETCDCTL_API=3 etcdctl --cacert="${ETCD_CA_CERT}" --cert="${ETCD_CERT}" --key="${ETCD_KEY}" --endpoints="${HOST_1}" member remove 60efa3874101e09f
# 查看 ep
kubectl get ep kubernetes -oyaml
# 被删除节点停止 kubelet、docker
systemctl stop kubelet
systemctl stop docker
K8s 集群升级
# 配yum 源
yum -y install kubelet-1.19.16 kubeadm-1.19.16 kubectl-1.19.16
# 下拉镜像
# edit node 加 CRI 注解
kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
# 查看升级计划
kubeadm upgrade plan
kubeadm upgrade apply v1.19.16
systemctl daemon-reload
systemctl restart kubelet
# 如果 kube-proxy 没升级,看一下卡在哪里了, ds 类型,默认是滚动升级的