1.服务器规划
部署节点
etcd节点
master节点
node节点
192.168.0.101
是
是
是
192.168.0.102
是
192.168.0.103
是
192.168.0.104
是
2.部署步骤
2.1在每个节点安装依赖工具
1# 文档中脚本默认均以root用户执行 2# 安装 epel 源并更新 3yum install epel-release -y 4yum update 5# 安装python 6yum install python -y
2.2在部署节点安装ansible
1yum install git python-pip -y 2# pip安装ansible(国内如果安装太慢可以直接用pip阿里云加速) 3#pip install pip --upgrade 4#pip install ansible 5pip install pip --upgrade -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com 6pip install --no-cache-dir ansible -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com 7 8作者:泛轻舟gen 9链接:https://www.jianshu.com/p/0652522d3142 10來源:简书 11简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
2.3部署到各个节点免秘钥登录
1ssh-keygen -t rsa -b 2048 回车 回车 回车 2ssh-copy-id $IPs #$IPs为所有节点地址包括自身,按照提示输入yes 和root密码
2.4在部署节点安装k8s安装
2.4.1 使用kubeasz简化安装
1# 方式一:使用git clone 2git clone https://github.com/gjmzj/kubeasz.git 3mkdir -p /etc/ansible 4mv kubeasz/* /etc/ansible 5# 方式二:从发布页面 https://github.com/gjmzj/kubeasz/releases 下载源码解压到同样目录 6# 本文用的是离线安装,版本为:kubeasz-0.4.0.tar
2.4.2 下载k8s代码版本包
1#离线下载地址; 2#https://pan.baidu.com/s/1c4RFaA#list/path=%2F 3#当前版本:k8s.1-11-3.tar 4tar zxvf k8s.1-11-3.tar.gz # 以安装k8s v1.11.3为例 5mv bin/* /etc/ansible/bin
2.5配置集群参数
1#单主多从配置 2cd /etc/ansible && cp example/hosts.m-single.example hosts
修改详情如下:
1# 'deploy' node, which the ansible-playbooks usually run on 2# variable 'NTP_ENABLED(=yes/no)' enables/disables the NTP server 'chrony' 3[deploy] 4192.168.0.101 NTP_ENABLED=yes 5 6# 'etcd' cluster must have odd member(s) (1,3,5,...) 7# variable 'NODE_NAME' is the distinct name of a member in 'etcd' cluster 8[etcd] 9192.168.0.101 NODE_NAME=etcd1 10 11[kube-master] 12192.168.0.101 13 14[kube-node] 15192.168.0.102 16192.168.0.103 17192.168.0.104 18 19# variable NEW_INSTALL: 'yes' to setup a new harbor server; 'no' to integrate with existed one 20[harbor] 21#192.168.1.8 HARBOR_DOMAIN="harbor.yourdomain.com" NEW_INSTALL=no 22 23# group reserved, add new 'kube-node' in it 24[new-node] 25#192.168.1.xx 26 27[all:vars] 28# --------- Main Variables --------------- 29# Cluster Deployment Mode: allinone, single-master, multi-master 30DEPLOY_MODE=single-master 31 32# Versions supported: v1.8, v1.9, v1.10, v1.11, v1.12 33K8S_VER="v1.11" 34 35# Cluster's Master IP, auto generated 36MASTER_IP="{{ groups['kube-master'][0] }}" 37KUBE_APISERVER="https://{{ MASTER_IP }}:6443" 38 39# Network plugins supported: calico, flannel, kube-router, cilium 40CLUSTER_NETWORK="flannel" 41 42# K8S Service CIDR, not overlap with node(host) networking 43SERVICE_CIDR="10.68.0.0/16" 44 45# Cluster CIDR (Pod CIDR), not overlap with node(host) networking 46CLUSTER_CIDR="172.20.0.0/16" 47 48# NodePort Range 49NODE_PORT_RANGE="20000-40000" 50 51# Kubernetes SVC IP (usually assigned with the first available IP of 'SERVICE_CIDR') 52CLUSTER_KUBERNETES_SVC_IP="10.68.0.1" 53 54# Cluster DNS Server's IP (assigned with an available IP of 'SERVICE_CIDR') 55CLUSTER_DNS_SVC_IP="10.68.0.2" 56 57# Cluster DNS Domain 58CLUSTER_DNS_DOMAIN="cluster.local." 59 60# Basic auth for apiserver 61BASIC_AUTH_USER="admin" 62BASIC_AUTH_PASS="test1234" 63 64# -------- Additional Variables -------------------- 65# Binaries Directory 66bin_dir="/opt/kube/bin" 67 68# CA and other components cert/key Directory 69ca_dir="/etc/kubernetes/ssl" 70 71# Deploy Directory (kubeasz workspace), don't change the default value right now 72base_dir="/etc/ansible"
2.6 下载离线docker包指定文件夹
1#从百度网盘下载https://pan.baidu.com/s/1c4RFaA 2#下载basic_images_kubeasz_0.3.tar.gz 3#basic_images_kubeasz_x.y.tar.gz 下载解压到/etc/ansible/down 目录 4tar zxvf basic_images_kubeasz_0.3.tar.gz -C /etc/ansible/down
2.6开始安装
1#cd /etc/ansible 2# 分步安装 3ansible-playbook 01.prepare.yml 4ansible-playbook 02.etcd.yml 5ansible-playbook 03.docker.yml 6ansible-playbook 04.kube-master.yml 7ansible-playbook 05.kube-node.yml 8ansible-playbook 06.network.yml 9ansible-playbook 07.cluster-addon.yml 10# 一步安装 11#ansible-playbook 90.setup.yml
2.6获取dashbord访问链接
1# 查看集群服务 2kubectl cluster-info|grep dashboard 3#结果如下: 4kubernetes-dashboard is running at https://192.168.0.101:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
2.7获取dashbord访问token进行登录
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

2.8未完待续..........
