利用kubeasz 安装Kubernete
之前在公司的私有云里面玩了蛮久的k8s,但是基于做实验和隐私考虑,在自己的mac(14年老版本)本地准备搭一个: 1 master and 2 work-node
的k8s集群, 简单记录一下重要的步骤。之前手动装过,这次想偷懒,所以直接利用kubeasz来帮忙搭建。
前提条件
安装之前需要准备好以下的软件:
安装过程
1. centos 安装
安装centos,和一般的vm安装没有什么区别,每个虚拟机推荐2Gi
内存和20Gi
硬盘。vm都配置一个NAT和HostOnly网卡,前者用于提供外网服务,后者用于宿主机管理以及k8s的node间通信,所以HostOnly这张网卡需要配置成static的地址,免得每次启动之后地址发生改变。
我的环境中分别给vm取名为master
, node1
, node2
。 所以在/etc/hosts
中配置:
196.168.56.101 master
196.168.56.102 node1
196.168.56.103 node2
设置 SELINUX=permissive
在/etc/selinux/config
。 关闭防火墙:
systemctl disable firewalld && systemctl stop firewalld
master上免密码ssh
:
# master和node1上执行
ssh-keygen -t rsa -b 2048
# host上执行
ssh-copy-id node1
ssh-copy-id node2
:warning:
1.如果是复制的vm,需要记住修改UUID, hostname, 以及ssh key
2.ansible 安装
这里我用master作为deploy的server,所以就在master执行了
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install epel-release -y
yum update
yum install git python python-pip -y
# 安装ansible (国内如果安装太慢可以直接用pip阿里云加速)
#pip install pip --upgrade
#pip install ansible
pip install pip --upgrade -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip install --no-cache-dir ansible -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
3. kubeasz安装k8s
同样在deploy的server上执行
3.1 下载项目源代码
git clone https://github.com/gjmzj/kubeasz.git
mkdir -p /etc/ansible
mv kubeasz/* /etc/ansible
3.2 下载k8s安装包
下载二进制文件 请从分享的百度云链接,下载解压到/etc/ansible/bin目录,如果你有合适网络环境也可以按照/down/download.sh自行从官网下载各种tar包:
tar zxvf k8s.1-9-8.tar.gz
mv bin/* /etc/ansible/bin
3.3 配置集群参数:
cd /etc/ansible && cp example/hosts.m-masters.example hosts
由于是屌丝配置(1master 2work-node)所以我们要修改一下hosts文件, 实际上只用修改master和work-node的ip,去掉loadbalance即可,这里贴出来完整的配置:
:warning:
1.实际生产环境中请安装官方教材部署多master多work-node
[root@master ansible]# cat hosts
# 集群部署节点:一般为运行ansible 脚本的节点
# 变量 NTP_ENABLED (=yes/no) 设置集群是否安装 chrony 时间同步
[deploy]
192.168.56.101 NTP_ENABLED=no
# etcd集群请提供如下NODE_NAME,注意etcd集群必须是1,3,5,7...奇数个节点
[etcd]
192.168.56.101 NODE_NAME=etcd1
[new-etcd] # 预留组,后续添加etcd节点使用
#192.168.1.x NODE_NAME=etcdx
[kube-master]
192.168.56.101
[new-master] # 预留组,后续添加master节点使用
#192.168.1.5
[kube-node]
192.168.56.102
192.168.56.103
[new-node] # 预留组,后续添加node节点使用
#192.168.1.xx
# 参数 NEW_INSTALL:yes表示新建,no表示使用已有harbor服务器
# 如果不使用域名,可以设置 HARBOR_DOMAIN=""
[harbor]
#192.168.1.8 HARBOR_DOMAIN="harbor.yourdomain.com" NEW_INSTALL=no
# 负载均衡(目前已支持多于2节点,一般2节点就够了) 安装 haproxy+keepalived
[lb]
#192.168.1.1 LB_ROLE=backup
#192.168.1.2 LB_ROLE=master
#【可选】外部负载均衡,用于自有环境负载转发 NodePort 暴露的服务等
[ex-lb]
#192.168.1.6 LB_ROLE=backup EX_VIP=192.168.1.250
#192.168.1.7 LB_ROLE=master EX_VIP=192.168.1.250
[all:vars]
# ---------集群主要参数---------------
#集群部署模式:allinone, single-master, multi-master
DEPLOY_MODE=single-master
#集群主版本号,目前支持: v1.8, v1.9, v1.10,v1.11, v1.12, v1.13
K8S_VER="v1.13"
# 集群 MASTER IP即 LB节点VIP地址,为区别与默认apiserver端口,设置VIP监听的服务端口8443
# 公有云上请使用云负载均衡内网地址和监听端口
MASTER_IP="192.168.56.101"
KUBE_APISERVER="https://{{ MASTER_IP }}:6443"
# 集群网络插件,目前支持calico, flannel, kube-router, cilium
CLUSTER_NETWORK="flannel"
# 服务网段 (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."
# 集群basic auth 使用的用户名和密码
BASIC_AUTH_USER="admin"
BASIC_AUTH_PASS="test1234"
# ---------附加参数--------------------
#默认二进制文件目录
bin_dir="/opt/kube/bin"
#证书目录
ca_dir="/etc/kubernetes/ssl"
#部署目录,即 ansible 工作目录,建议不要修改
base_dir="/etc/ansible"
3.4 最后一步安装:
开始安装 如果你对集群安装流程不熟悉,请阅读项目首页 安装步骤 讲解后分步安装,并对 每步都进行验证(表示对ansible不是很熟,直接使用了一步安装,完全木有问题:smile:):
# 分步安装
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
另外方便在Macbook上直接操作K8s,再执行下面步骤:
scp root@192.168.56.101:/etc/kubernetes/admin.conf ~/.kube/config2
export KUBECONFIG=~/.kube/config2
brew install kubectl
小结
kubeasz帮忙确实省了很多effort,但是发现api-server之类的服务貌似是通过static-pod部署的,暂时还不知道能不能修改。另外就是cni插件没有看到weave的选项,如果只是为了快速部署和体验还是挺方便的。