k8s高可用集群搭建

发布时间 2019-12-21 20:36:35

ansible+kubeadm搭建k8s高可用集群

  1. 环境要求和集群规划
    1.1. 环境准备
    操作系统:CentOS7.4 mini安装
    系统内核:4.4.179(升级内核)
    1.2. 版本和网络规划
    组件版本:
    k8s组件 etcd docker calico
    1.14.1 3.3.10 18.06.3-ce 3.6.1

网络规划(要求集群网络都不可以与公司内网网段冲突):
物理服务器/虚拟机网络 集群内部服务网络 集群内部通讯网络
192.168.33.0/24 10.254.0.0/16 172.88.0.0/16

1.3. 其他说明
集群规划:脚本支持安装2到多个节点,因为最初是面向集群安装的,所以默认安装了haproxy和keepalived。
建议集群:3个master节点 + n个worker(n>0)节点

  1. 部署k8s集群
    2.1. 安装准备
    (使用root用户)
  1. 设置主机名:hostnamectl set-hostname srv1.k8s.com/srv2.k8s.com/…

  2. 上传安装包(ansible目录)到master节点/root/目录

  3. 安装ansible:rpm -Uvh ansible/ansible2.7/*

  4. 查看安装是否成功:ansible --version

  5. 替换ansible目录内容:cd && rm -rf /etc/ansible && mv ansible /etc/

2.2. 安装集群

  1. 配置集群规划(非常重要):vi /etc/ansible/hosts

[lb]:是两台haproxy和keepalived所在服务器,其中master是keepalived所在master节点,backup是keepalived所在slave节点。
[master]:是k8s集群master节点组,master可以只部署一个,也可以有多个。
[worker]:k8s集群工作节点组,不能和[master]组有重复ip地址。
[all:vars]:是集群部署用到的变量。其中MASTER_IP是k8s集群的虚拟ip,需要跟集群服务器ip地址保持同一个网段;KUBE_APISERVER是k8s集群对外服务的访问方式,SERVICE_CIDR是k8s集群内部服务的ip网段(不能和内网网段冲突),CLUSTER_CIDR是集群内部通讯地址网段(不能和内网网段冲突)。

  1. 执行一键安装脚本:cd /etc/ansible && source 000.onekey.sh

这里是生成密钥,三次回车即可。

这里需要输入root用户ssh使用的密码,要求所有密码一致。

  1. 查看部署情况:kubectl get nodes

到这里,k8s集群+coredns+dashboard已经部署完成。
上面截图是单master部署,多个master会显示多个master节点。
扩展组件安装请根据实际需要查看“k8s组件安装”

  1. 访问集群dashboard:火狐浏览器打开:https://{{MASTER_IP}}:32000

点击高级–>点击接受风险并继续

获取令牌:kubectl describe secret admin-token -n kube-system

复制白色部分,粘贴到令牌输入框,登录

然后就可以看到k8s集群的dashboard了

  1. 其他
    3.1. 升级或者回退系统内核版本
  1. 下载系统内核:
    https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-4.4.179-1.el7.elrepo.x86_64.rpm

  2. 安装内核:rpm -ivh kernel-lt-4.4.179-1.el7.elrepo.x86_64.rpm

  3. 设置开机默认启动内核:grub2-set-default 0

  4. 重启生效:reboot

  5. 重启后确认内核版本:uname -r

3.2. 组件或镜像下载

  1. CentOS7.4镜像:

  2. docker-ce:
    https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/

  3. kubeadm/kubectl/kubelet组件rpm:

配置yum源和yum缓存,然后yum安装后保存rpm包即可。

  1. 下载组件镜像
    一键脚本:bash image_list.sh
    #!/bin/bash
    tag1=“mirrorgooglecontainers”
    tag2=“k8s.gcr.io”

for i in {kube-apiserver:v1.14.1,kube-controller-manager:v1.14.1,kube-scheduler:v1.14.1,kube-proxy:v1.14.1,pause:3.1,etcd:3.3.10}
do
docker pull t a g 1 / {tag1}/ tag1/{i}
docker tag t a g 1 / {tag1}/ tag1/{i} t a g 2 / {tag2}/ tag2/{i}
docker rmi t a g 1 / {tag1}/ tag1/{i}
done

docker pull coredns/coredns:1.3.1 && docker tag coredns/coredns:1.3.1 gcr.k8s.io/coredns:1.3.1 && docker rmi coredns/coredns:1.3.1

获取kubeadm需要的镜像:kubeadm config images list

替换成国内镜像后:
[root@srv1 ansible]# cat image_list
mirrorgooglecontainers/kube-apiserver:v1.14.1
mirrorgooglecontainers/kube-controller-manager:v1.14.1
mirrorgooglecontainers/kube-scheduler:v1.14.1
mirrorgooglecontainers/kube-proxy:v1.14.1
mirrorgooglecontainers/pause:3.1
mirrorgooglecontainers/etcd:3.3.10
coredns/coredns:1.3.1

下载镜像
[root@srv1 ansible]# for i in $(cat image_list);do docker pull $i;done
v1.14.1: Pulling from mirrorgooglecontainers/kube-apiserver
Digest: sha256:2753dd7433d2946db3bfc47ea26443ee63499453f4fcb68f3b36bcc2e979aa9d
Status: Downloaded newer image for mirrorgooglecontainers/kube-apiserver:v1.14.1
v1.14.1: Pulling from mirrorgooglecontainers/kube-controller-manager
Digest: sha256:5105de4f56660b76d79c59837776192580c93ada138c92030edcbdd5500b6723
Status: Downloaded newer image for mirrorgooglecontainers/kube-controller-manager:v1.14.1
v1.14.1: Pulling from mirrorgooglecontainers/kube-scheduler
Digest: sha256:f83017e9e88d28ba8cc4c0df9fbeeb1865f2625bcff5ec0463ddeb77d56e349b
Status: Downloaded newer image for mirrorgooglecontainers/kube-scheduler:v1.14.1
v1.14.1: Pulling from mirrorgooglecontainers/kube-proxy
Digest: sha256:8a0b649e306c6a2df39c0920a029ac85caf331a12665ed48e2eec0095bb6c5e2
Status: Downloaded newer image for mirrorgooglecontainers/kube-proxy:v1.14.1
3.1: Pulling from mirrorgooglecontainers/pause
Digest: sha256:59eec8837a4d942cc19a52b8c09ea75121acc38114a2c68b98983ce9356b8610
Status: Downloaded newer image for mirrorgooglecontainers/pause:3.1
3.3.10: Pulling from mirrorgooglecontainers/etcd
Digest: sha256:8a82adeb3d0770bfd37dd56765c64d082b6e7c6ad6a6c1fd961dc6e719ea4183
Status: Downloaded newer image for mirrorgooglecontainers/etcd:3.3.10
1.3.1: Pulling from coredns/coredns
Digest: sha256:02382353821b12c21b062c59184e227e001079bb13ebd01f9d3270ba0fcbf1e4
Status: Downloaded newer image for coredns/coredns:1.3.1

重新给镜像打tag

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值