摘要:

  前面几篇文章,就是整个的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 ;
} stream {
upstream kube_apiserver {
least_conn;
server 10.10.0.18:;
server 10.10.0.19:;
server 10.10.0.20:;
} server {
listen 0.0.0.0:;
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:: \
-v /etc/nginx:/etc/nginx \
--name nginx-proxy \
--net=host \
--restart=on-failure: \
--memory=512M \
nginx:1.14.-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'

最新文章

  1. pip安装 exception记录
  2. RASPBERRY PI 外设学习资源
  3. HTML5[5]:在移动端禁用长按选中文本功能
  4. hdu 4946 Area of Mushroom(凸包)
  5. 二模11day2解题报告
  6. T-SQL openquery 删除报错 “键列信息不足或不正确。更新影响到多行”
  7. [Form Builder]内置函数execute_trigger、do_key详解
  8. LNMP卸载
  9. 开源JDBC工具类DbUtils
  10. 面试题----寻找比一个N位数大的“下”一个数
  11. Android 开发笔记___Intent的使用
  12. 关于longPressGesture做一个长按连加的效果(原创)
  13. centos 7安装mysql 执行./scripts/mysql_install_db --user=mysql 报错 FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db: Data::Dumper
  14. linux操作命令 开发人员需要掌握的一些命令
  15. 基于Golang设计一套微服务架构[转]
  16. Hinton“深度学习之父”和“神经网络先驱”,新论文Capsule将推翻自己积累了30年的学术成果时
  17. P1288 取数游戏II
  18. Javascript模块化工具require.js教程
  19. 搭建 PhoneGap 开发环境
  20. eclipse删除的文件如何恢复。

热门文章

  1. 【原创】go语言学习(十五)IO操作2
  2. JavaEE的ajax入门
  3. Java学习日记——基础篇(二)基本语法
  4. (转)Linux 磁盘IO性能测试
  5. python3编程基础之一:标识符
  6. 为Python配置Vim编辑器(GUI/非GUI皆可)
  7. wx.navigateTo的url不生效的问题
  8. Markdown 小记
  9. OpenJudge计算概论-年龄与疾病
  10. 连接池大小调优 原创: ImportNew ImportNew 2017-06-07