一、环境
服务器信息
主机名 | IP | 备注 |
---|---|---|
k8s-master1 | 192.168.0.216 | Master1,etcd1,node节点 |
k8s-master2 | 192.168.0.217 | Master2,etcd2,node节点 |
k8s-master3 | 192.168.0.218 | Master3,etcd3,node节点 |
slb | lb.ypvip.com.cn | 外网阿里slb域名 |
本环境使用阿里云,
API Server
高可用通过阿里云SLB
实现,如果环境不在云上,可以通过 Nginx Keepalived,或者 HaProxy Keepalived等实现。
服务版本与K8S集群说明
阿里slb
设置TCP监听
,监听6443端口(通过四层负载到master apiserver)。- 所有
阿里云ECS主机
使用CentOS 7.6.1810
版本,并且内核都升到5.x
版本。 - K8S 集群使用
Iptables 模式
(kube-proxy 注释中预留Ipvs
模式配置) - Calico 使用
IPIP
模式 - 集群使用默认
svc.cluster.local
10.10.0.1
为集群 kubernetes svc 解析ip- Docker CE version 19.03.6
- Kubernetes Version 1.18.2
- Etcd Version v3.4.7
- Calico Version v3.14.0
- Coredns Version 1.6.7
- Metrics-Server Version v0.3.6
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.10.0.1 <none> 443/TCP 6d23h
PS:上面服务版本都是使用
当前最新版本
Service 和 Pods Ip 段划分
名称 | IP网段 | 备注 |
---|---|---|
service-cluster-ip | 10.10.0.0/16 | 可用地址 65534 |
pods-ip | 10.20.0.0/16 | 可用地址 65534 |
集群dns | 10.10.0.2 | 用于集群service域名解析 |
k8s svc | 10.10.0.1 | 集群 kubernetes svc 解析ip |
二、环境初始化
所有集群服务器都需要初始化
2.1 停止所有机器 firewalld 防火墙
代码语言:javascript复制$ systemctl stop firewalld
$ systemctl disable firewalld
2.2 关闭 swap
代码语言:javascript复制$ swapoff -a
$ sed -i 's/.*swap.*/#&/' /etc/fstab
2.3 关闭 Selinux
代码语言:javascript复制$ setenforce 0
$ sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux
$ sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
$ sed -i "s/^SELINUX=permissive/SELINUX=disabled/g" /etc/sysconfig/selinux
$ sed -i "s/^SELINUX=permissive/SELINUX=disabled/g" /etc/selinux/config
2.4 设置主机名、升级内核、安装 Docker ce
运行下面 init.sh
shell 脚本,脚本完成下面四项任务:
- 设置服务器
hostname
- 安装
k8s依赖环境
升级系统内核
(升级Centos7系统内核,解决Docker-ce版本兼容问题)- 安装
docker ce
19.03.6 版本
在每台机器上运行 init.sh 脚本,示例如下:
代码语言:javascript复制Ps:init.sh 脚本只用于
Centos
,支持重复运行
。
# k8s-master1 机器运行,init.sh 后面接的参数是设置 k8s-master1 服务器主机名
$ chmod x init.sh && ./init.sh k8s-master1
# 执行完 init.sh 脚本,请重启服务器
$ reboot
代码语言:javascript复制#!/usr/bin/env bash
function Check_linux_system(){
linux_version=`cat /etc/redhat-release`
if [[ ${linux_version} =~ "CentOS" ]];then
echo -e "