基于 Ansible 快速部署 kubernetes 1.10.4 HA 高可用集群

一、背景

       大神写的 ansible 脚本地址:https://github.com/gjmzj/kubeasz

       菜鸟只是拿来试试,顺便记录下过程。

二、部署过程

2.1  准备机器

      本次实验准备了4台虚机,192.168.5.201~204 ,主机名 node-01 ~ node-04

      node-01 当作部署机,node-01~02 作为 Master,node-03~04 作为 Slave

      全部安装 CentOS Linux release 7.5.1804 64位 操作系统

2.2  前期配置

      在每个节点安装依赖工具

yum install epel-release -y
yum update
yum install python -y

2.3  准备部署节点

扫描二维码关注公众号,回复: 1802724 查看本文章

      a. 在 node-01 上安装 git 和 ansible

yum install git ansible -y

      b. 配置 node-01 到 node-01~04 的免密码 ssh 登陆

          以 root 用户登录 node-01,执行如下命令

ssh-keygen -t rsa -P ''
ssh-copy-id -i 192.168.5.201
ssh-copy-id -i 192.168.5.202
ssh-copy-id -i 192.168.5.203
ssh-copy-id -i 192.168.5.204

      c. 准备 ansible 脚本

         百度云地址:https://pan.baidu.com/s/1fS0Qj9bkA5VRgNZLgcYwYA

         下载下来后,将解压内容放到 /etc/ansible/

         

      d. 按需修改 hosts 文件,分配集群角色

          注意 LB 的网卡接口信息需要跟实际机器保持一致

          附上实验使用的 hosts 配置文件

# 部署节点:运行这份 ansible 脚本的节点
[deploy]
192.168.5.201

# etcd集群请提供如下NODE_NAME,注意etcd集群必须是1,3,5,7...奇数个节点
[etcd]
192.168.5.201 NODE_NAME=etcd1
192.168.5.202 NODE_NAME=etcd2
192.168.5.203 NODE_NAME=etcd3

[kube-master]
192.168.5.201
192.168.5.202

# 负载均衡至少两个节点,安装 haproxy+keepalived
# 如果是公有云环境请优先使用云上负载均衡,lb组留空
[lb]
192.168.5.201 LB_IF="ens33" LB_ROLE=backup  # 注意根据实际使用网卡设置 LB_IF变量
192.168.5.202 LB_IF="ens33" LB_ROLE=master

[kube-node]
192.168.5.203
192.168.5.204

# 如果启用harbor,请配置后面harbor相关参数
[harbor]
#192.168.1.8

# 预留组,后续添加master节点使用
[new-master]
#192.168.1.5

# 预留组,后续添加node节点使用
[new-node]
#192.168.1.xx

[all:vars]
# ---------集群主要参数---------------
#集群部署模式:allinone, single-master, multi-master
DEPLOY_MODE=multi-master

#集群主版本号,目前支持: v1.8, v1.9, v1.10
K8S_VER="v1.10"

# 集群 MASTER IP即 LB节点VIP地址,为区别与默认apiserver端口,设置VIP监听的服务端口8443
# 公有云上请使用云负载均衡内网地址和监听端口
MASTER_IP="192.168.5.200"
KUBE_APISERVER="https://{{ MASTER_IP }}:8443"

#TLS Bootstrapping 使用的 Token,使用 head -c 16 /dev/urandom | od -An -t x | tr -d ' ' 生成
BOOTSTRAP_TOKEN="8c8dfa79792f34d7f62c4df15acdb07a"

# 集群网络插件,目前支持calico, flannel, kube-router
CLUSTER_NETWORK="calico"

# 默认使用kube-proxy, 可选SERVICE_PROXY="IPVS" (前提是网络选择kube-router)
SERVICE_PROXY="kube-proxy"

# 服务网段 (Service CIDR),注意不要与内网已有网段冲突
SERVICE_CIDR="10.68.0.0/16"

# POD 网段 (Cluster CIDR),注意不要与内网已有网段冲突
CLUSTER_CIDR="172.20.0.0/16"

# 服务端口范围 (NodePort Range)
NODE_PORT_RANGE="20000-40000"

# kubernetes 服务 IP (预分配,一般是 SERVICE_CIDR 中第一个IP)
CLUSTER_KUBERNETES_SVC_IP="10.68.0.1"

# 集群 DNS 服务 IP (从 SERVICE_CIDR 中预分配)
CLUSTER_DNS_SVC_IP="10.68.0.2"

# 集群 DNS 域名
CLUSTER_DNS_DOMAIN="cluster.local."

# etcd 集群间通信的IP和端口, 根据etcd组成员自动生成
TMP_NODES="{% for h in groups['etcd'] %}{{ hostvars[h]['NODE_NAME'] }}=https://{{ h }}:2380,{% endfor %}"
ETCD_NODES="{{ TMP_NODES.rstrip(',') }}"

# etcd 集群服务地址列表, 根据etcd组成员自动生成
TMP_ENDPOINTS="{% for h in groups['etcd'] %}https://{{ h }}:2379,{% endfor %}"
ETCD_ENDPOINTS="{{ TMP_ENDPOINTS.rstrip(',') }}"

# 集群basic auth 使用的用户名和密码
BASIC_AUTH_USER="admin"
BASIC_AUTH_PASS="ctsi1234"

# ---------附加参数--------------------
#默认二进制文件目录
bin_dir="/opt/kube/bin"

#证书目录
ca_dir="/etc/kubernetes/ssl"

#部署目录,即 ansible 工作目录,建议不要修改
base_dir="/etc/ansible"

#私有仓库 harbor服务器 (域名或者IP)
#HARBOR_IP="192.168.1.8"
#HARBOR_DOMAIN="harbor.yourdomain.com"

2.4  部署集群

       在部署节点执行 (失败的步骤,多执行几次就好了)

cd /etc/ansible
ansible all -m ping
# 分步安装
ansible-playbook 01.prepare.yml
ansible-playbook 02.etcd.yml
ansible-playbook 03.docker.yml
ansible-playbook 04.kube-master.yml
ansible-playbook 05.kube-node.yml
ansible-playbook 06.network.yml
ansible-playbook 07.cluster-addon.yml
# 一步安装
ansible-playbook 90.setup.yml

2.5  后期配置

      默认,ansible 把相关命令文件都放到 /opt/kube/bin 下了,我们可以配置下环境变量,便于直接使用

      在 /etc/profile 末尾追加

      export PATH=.:/opt/kube/bin:$PATH

      然后,执行 source /etc/profile

      这样就可以直接执行 docker 、kubectl 等命令了

2.6  部署 dashboard

kubectl create -f /etc/ansible/manifests/dashboard/kubernetes-dashboard.yaml
kubectl create -f /etc/ansible/manifests/dashboard/ui-admin-rbac.yaml
kubectl create -f /etc/ansible/manifests/dashboard/ui-read-rbac.yaml
       创建访问 token (admin)
kubectl create -f /etc/ansible/manifests/dashboard/admin-user-sa-rbac.yaml
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

        

2.7  访问 dashboard

       查看访问地址

kubectl cluster-info
       

        浏览器打开:

        https://192.168.5.200:8443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy

        


        选择 令牌 登陆,输入刚才查看的 token,即可登入系统

        



======

特别说明:

集群节点是需要下载一些镜像的,不过镜像被替换了地址,国内就可以获得,机器能联网即可

REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
calico/node                          v3.0.6              15f002a49ae8        2 months ago        248MB
calico/cni                           v2.0.5              b5e5532af766        2 months ago        69.1MB
mirrorgooglecontainers/pause-amd64   3.1                 da86e6ba6ca1        6 months ago        742kB
mirrorgooglecontainers/kubernetes-dashboard-amd64   v1.8.3              0c60bcf89900        4 months ago        102MB
calico/kube-controllers              v2.0.4              f8e683e673ec        2 months ago        55.1MB

猜你喜欢

转载自blog.csdn.net/shida_csdn/article/details/80859200