K8S从入门到放弃系列-(8)kube-apiserver 高可用配置

摘要:
摘要:前面的文章是关于整个主节点组件的部署。如上所述,在k8s组件中,kube控制器管理器、kube调度器和etcd通过领导者选举模式非常可用。在本章中,我们将重点介绍以下kube-apiserver高可用性配置。1.以下操作属于节点节点上组件的部署。在主节点上只执行文件配置,然后发布到每个节点。等我再见到你,我会明白的。k8s1.14的官方文档指出,Docker版本支持Docker18.09的最新版本。

摘要:

  前面几篇文章,就是整个的master节点各组件的部署,上面我们提到过,k8s组件中,kube-controller-manager、kube-scheduler及etcd这三个服务高可用,都是通过leader选举模式产生,本章节我们着重介绍下kube-apiserver高可用配置

1、以下操作属于node节点上组件的部署,在master节点上只是进行文件配置,然后发布至各node节点。

2、若是需要master也作为node节点加入集群,也需要在master节点部署docker、kubelet、kube-proxy。

1)常用高可用

  keeplaived+HAproxy

  公有云SLB

      Nginx反向代理(本文使用)

2)docker

在部署node组件之前,我们需要先在node节点部署docker,因为后续kubelet启动,需要依赖docker服务,并且,k8s部署服务,都是基于docker进行运行。后面遇到时自会明白。
k8s1.14官方文档中说明 支持docker版本到docker18.09最新版本。
## 设置存储库
[root@k8s-master01 ~]# ansible k8s-node -m shell -a 'yum install -y yum-utils device-mapper-persistent-data lvm2'
## 添加yum源
[root@k8s-master01 ~]# ansible k8s-node -m shell -a 'yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo'
## 安装指定版本docker
[root@k8s-master01 ~]# ansible k8s-node -m shell -a 'yum install docker-ce-18.09.5-3.el7 -y'
## 启动
[root@k8s-master01 ~]# ansible k8s-node -m shell -a 'systemctl enable docker'
[root@k8s-master01 ~]# ansible k8s-node -m shell -a 'systemctl start docker'

3)创建nginx.conf配置文件

原理:为了保证 apiserver 的 HA,需要在每个 node 上部署 nginx 来反向代理(tcp)所有 apiserver;然后 kubelet、kube-proxy 组件连接本地 127.0.0.1:6443 访问 apiserver,以确保任何 master 挂掉以后 node 都不会受到影响;

## 创建nginx配置文件目录
[root@k8s-master01 ~]# ansible k8s-node -m file -a 'path=/etc/nginx state=directory'
## 编辑nginx配置文件
[root@k8s-master01 ~]# vim /opt/k8s/cfg/nginx.conf
error_log stderr notice;

worker_processes auto;
events {
      multi_accept on;
      use epoll;
      worker_connections 1024;
}

stream {
    upstream kube_apiserver {
        least_conn;
        server 10.10.0.18:6443;
        server 10.10.0.19:6443;
        server 10.10.0.20:6443;
    }

    server {
        listen        0.0.0.0:6443;
        proxy_pass    kube_apiserver;
        proxy_timeout 10m;
        proxy_connect_timeout 1s;
    }
}
## 分发nginx.conf至node节点
[root@k8s-master01 ~]# ansible k8s-node -m copy -a 'src=/opt/k8s/cfg/nginx.conf dest=/etc/nginx/'
2)配置 Nginx 基于 docker 进程,然后配置 systemd 来启动

[root@k8s-master01 k8s]# vim /opt/k8s/unit/nginx-proxy.service
[Unit]
Description=kubernetes apiserver docker wrapper
Wants=docker.socket
After=docker.service

[Service]
User=root
PermissionsStartOnly=true
ExecStart=/usr/bin/docker run -p 127.0.0.1:6443:6443 
                              -v /etc/nginx:/etc/nginx 
                              --name nginx-proxy 
                              --net=host 
                              --restart=on-failure:5 
                              --memory=512M 
                  nginx:1.14.2-alpine
ExecStartPre=-/usr/bin/docker rm -f nginx-proxy
ExecStop=/usr/bin/docker stop nginx-proxy
Restart=always
RestartSec=15s
TimeoutStartSec=30s

[Install]
WantedBy=multi-user.target
## 分发至node节点
[root@k8s-master01 ~]# ansible k8s-node -m copy -a 'src=/opt/k8s/unit/nginx-proxy.service dest=/usr/lib/systemd/system/'
## 启动服务
[root@k8s-master01 ~]# ansible k8s-node -m shell -a 'systemctl daemon-reload'
[root@k8s-master01 ~]# ansible k8s-node -m shell -a 'systemctl enable nginx-proxy'
[root@k8s-master01 ~]# ansible k8s-node -m shell -a 'systemctl start nginx-proxy'

免责声明:文章转载自《K8S从入门到放弃系列-(8)kube-apiserver 高可用配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇DELPHI 字符串分割处理基于Map多种方式实现简单的缓存处理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用Docker搭建MySQL主从复制(一主一从)

简介 因为个人资源有限,手里没有太多的服务器,只能通过docker来进行mysql的主从搭建。原理基本上都是一致的,在实际生产中,也可以按照该方式进行搭建。如果对Docker还不是很了解,请移步Docker官网进行学习! 使用Docker搭建主从 使用Docker拉取MySQL镜像,使用5.7版本 我们可以先使用search命令查询一下mysql镜像,...

windows 下 docker 入门

这里只是具体过程,有不清楚的欢迎随时讨论 1、安装docker ,除了下一步,好像也没有其他操作了 2、安装好docker后,默认是运行在linux 下的,这时我们需要切换到windows 环境下, 操作:在右下角docker图标---》鼠标右键--》switch to windows container,点击即可切换至windows ,反之liunx ...

Ubuntu 搭建ELK

一、简介 官网地址:https://www.elastic.co/cn/ 官网权威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html 安装指南:https://www.elastic.co/guide/en/elasticsearch/reference/5.x...

centos6.5linux安装docker之升级内核

一.运行docker Linux内核版本需要在3.8以上,针对centos6.5 内核为2.6的系统需要先升级内核.不然会特别卡 在yum的ELRepo源中,有mainline(4.5)、long-term(4.4)这2个内核最新版本,考虑到long-term更稳定,会长期更新,所以选择这个版本。(在 http://hkg.mirror.rackspac...

k8s健康检查(七)

默认的健康检查 强大的自愈能力是 Kubernetes 这类容器编排引擎的一个重要特性。自愈的默认实现方式是自动重启发生故障的容器。除此之外,用户还可以利用 Liveness 和 Readiness 探测机制设置更精细的健康检查,进而实现如下需求: 零停机部署。 避免部署无效的镜像。 更加安全的滚动升级。 每个容器启动时都会执行一个进程,此进程由 Do...

docker安装mysql

装软件这样的事情,当然是要去官网最好,然而我就遇到个不靠谱的事情。 docker安装mysql,我照样去官网找镜像,然后自然的去看官网的启动教程, 在下载过后镜像,输入命令启动后 $ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag 这个时候使用连接工...