一 部署规划与准备
系统:CentOS7.9
K8S版本:1.15.12
K8S机器规划:
服务器 | 节点名称 | 其他 | 备注 |
---|---|---|---|
192.168.0.101 | k8s-master01 | keepalived、haproxy、VIP(192.168.0.200) | 主节点 |
192.168.0.102 | k8s-master02 | keepalived、haproxy、VIP(192.168.0.200) | 主节点 |
192.168.0.103 | k8s-master03 | keepalived、haproxy、VIP(192.168.0.200) | 主节点 |
192.168.0.104 | k8s-worker01 | 工作节点 | |
192.168.0.105 | k8s-worker02 | 工作节点 | |
192.168.0.106 | k8s-worker03 | 工作节点 |
每台机器更改hosts
1 | cat > /etc/hosts << EOF |
禁用SELINUX并关闭Swap、关闭防火墙
1 | setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config |
安装的docker版本:18.09.9
1 | yum -y install yum-utils |
修改 /etc/docker/daemon.json 如下:
1 | cat > /etc/docker/daemon.json << EOF |
insecure-registries 配置主要是因为我们使用的是自建的docker镜像仓库;
log-opts 配置主要是限制每个pod日志的大小以避免被日志写满磁盘;
exec-opts 配置主要是告诉 Docker 守护进程使用 Systemd Cgroup 驱动程序来管理容器的 Cgroups
取其中一台如 192.168.0.101 作为时钟服务器
1 | yum install chronyd -y |
另外5台直接同步以上机器的时钟
1 | yum install chronyd -y |
K8S相关的yum源配置
1 | cat << EOF > kubernetes.repo |
修改所有节点内核参数
1 | cat <<EOF > /etc/sysctl.d/k8s.conf |
1 | modprobe br_netfilter && sysctl -p /etc/sysctl.d/k8s.conf |
二 安装k8s(安装keepalived、 haproxy、kubeadm-1.15.12、kubectl-1.15.12、kubelet-1.15.12)
1 | # master节点安装 |
1 | # worker节点安装 |
haproxy配置
1 | # /etc/haproxy/haproxy.cfg 后面追加 |
1 | #--------------------------------------------------------------------- |
配置keepalived
配置/etc/keepalived/keepalived.conf ( priority 192.168.0.103:99、192.168.0.102:90、192.168.0.101:80 state 192.168.0.103:MASTER、192.168.0.102:BACKUP、192.168.0.101:BACKUP)
1 | cat <<EOF > /etc/keepalived/keepalived.conf |
启动 haproxy、keepalived
1 | systemctl daemon-reload |
k8s的master安装、worker安装
1 | # 生成预处理文件,kubeadm-init.yaml,是我们初始化使用的文件,里面大概修改这几项参数 |
三个master节点提前拉取镜像
1 | # kubeadm init --config kubeadm-init.yaml --upload-certs |
在192.168.0.102节点执行以下命令增加 k8s-master02
1 | kubeadm join 192.168.0.200:8443 --token abcdef.0123456789abcdef \ |
在192.168.0.103节点执行以下命令增加 k8s-master02
1 | kubeadm join 192.168.0.200:8443 --token abcdef.0123456789abcdef \ |
三个master节点执行以下命令
1 | mkdir -p $HOME/.kube |
三个worker节点执行以下命令
1 | # 192.168.0.104 |
安装flannel,添加以下yaml
1 |
|
特别注意:由于cni1.0版本后 /opt/cni/bin 缺少 flannell,所以需要在每个节点下的 /opt/cni/bin 下加入以下文件(解压后加入)
github下载地址:https://github.com/containernetworking/plugins/releases/tag/v0.8.6
如果需要让k8s的master参与调度,执行一下命令:
1 | # 查看污点 |
注意:通过kubeadm安装的k8s集群,证书只有一年有效期,到期后需要刷新证书,刷新证书的命令如下:
1 | # 证书有效期查询 -- 在master节点 |