kubeadm生产环节高可用部署

Kubernetes实战指南(三十四): 高可用安装K8s集群1.20.x https://blog.csdn.net/qinruan1856/article/details/111060291 Kubernetes实战指南(三十三):都0202了,你还在手写k8s的yaml文件? https://blog.csdn.net/qinruan1856/article/details/108142983?spm=1001.2014.3001.5501 Kubernetes实战指南(三十一):零宕机无缝迁移Spring Cloud至k8s https://blog.csdn.net/qinruan1856/article/details/107287370?spm=1001.2014.3001.5501

1. 安装说明

虽然K8s 1.20版本宣布将在1.23版本之后将不再维护dockershim,意味着K8s将不直接支持Docker,不过大家不必过于担心。一是在1.23版本之前我们仍然可以使用Docker,二是dockershim肯定会有人接盘,我们同样可以使用Docker,三是Docker制作的镜像仍然可以在其他Runtime环境中使用,所以大家不必过于恐慌。

本次安装采用的是Kubeadm安装工具,安装版本是K8s 1.20+,采用的系统为CentOS 7.9,其中Master节点3台,Node节点1台,高可用工具采用HAProxy + KeepAlived

2. 节点规划

IP
主机名

10.10.181.243

k8s-master-1

10.10.181.244

k8s-master-2

10.10.181.245

k8s-master-3

10.10.181.241

k8s-node-1

10.10.181.200

VIP

3. 基本配置

3-1、配置hosts

cat >> /etc/hosts << EOF
10.10.181.243 k8s-master-1
10.10.181.244 k8s-master-2
10.10.181.245 k8s-master-3
10.10.181.200 k8s-master-lb
10.10.181.241 k8s-node-1
EOF

3-2、Yum源配置

3-3、关闭防火墙|Swap|selinux

3-4、 时间同步

3-4、 配置免密

3-5、升级内核更新

3-6、内核模块配置

注意: kernel < 4.19 使用 nf_conntrack_ipv4 kernel > 4.19 使用 nf_conntrack

3-7、内核参数调优

3-8、 安装 docker

3-9、 安装组件

4. HA高可用<仅master节点>

4-1、 master 节点配置

5、集群初始化

通过配置文件启动主节点

然后根据我们自己的需求修改配置,比如修改 imageRepository 的值,kube-proxy 的模式为 ipvs

k8s-master-1 节点创建 new.yaml 配置文件如下

将 new.yaml 文件复制到其他 master 节点,修改 advertiseAddress 为本机地址, 之后所有 Master 节点提前下载镜像,可以节省初始化时间:

所有节点设置开机自启动kubelet

k8s-master-1 节点初始化,初始化以后会在 /etc/kubernetes 目录下生成对应的证书和配置文件,之后其他 Master节点加入 k8s-master-1 即可:

初始化成功以后,会产生Token值,用于其他节点加入时使用,因此要记录下初始化成功生成的token值(令牌值)

k8s-master-1 节点配置环境变量,用于访问Kubernetes集群:

6、 添加节点

7、 Calico安装

修改calico-etcd.yaml的以下位置

创建calico

查看

8、 Metrics Server部署

在新版的Kubernetes中系统资源的采集均使用Metrics-server,可以通过Metrics采集节点和Pod的内存、磁盘、CPU和网络的使用率。 将 k8s-master-1 节点的 front-proxy-ca.crt 复制到所有Node节点

安装metrics server

9、Dashboard部署

在谷歌浏览器(Chrome)启动文件中加入启动参数,用于解决无法访问Dashboard的问题,参考图:

更改dashboard的svc为NodePort:

将ClusterIP更改为NodePort(如果已经为NodePort忽略此步骤):

根据自己的实例端口号,通过任意安装了kube-proxy的宿主机或者VIP的IP+端口即可访问到dashboard: 访问Dashboard:https://10.10.181.243:18282(请更改18282为自己的端口),选择登录方式为令牌(即token方式)

查看token值:

10、设置 IPVS 模式

将 kube-proxy 修改为 ipvs 模式,因为初始化的时候注释了 ipvs

滚动更新 kube-proxy 的 pod

验证:

11、 剔除Master污点

kubeadm 安装后,master 节点默认不允许部署 pod,可以通过如下方式:

12、证书只有1年的处理:

kubeadm 安装的集群,证书有效期默认一年, master 节点的kube-apiserver、kube-scheduler、kube-controller-manager、etcd都是以容器运行

方法一:

手动在1年内更新证书 也可以把下面命令写一个定时任务。每1个月执行一次

方法二

直接修改kubeadm 源码 增加证书到100年。

13、注意事项

kubeadm 与 二级制不同的是: kubelet 的配置文件在 /etc/sysconfig/kubelet 和 /var/lib/kubelet/config.yaml 其他的配置文件 /etc/kubernetes/manifests/ 目录下, 比如 kube-apiserver.yaml, 改yaml文件更改后, kubelet会自动刷新配置,也就是会重启pod. 不能再次创建该文件

Last updated