利用kubeasz 安装Kubernetes

利用kubeasz 安装Kubernete

之前在公司的私有云里面玩了蛮久的k8s,但是基于做实验和隐私考虑,在自己的mac(14年老版本)本地准备搭一个: 1 master and 2 work-node的k8s集群, 简单记录一下重要的步骤。之前手动装过,这次想偷懒,所以直接利用kubeasz来帮忙搭建。

前提条件

安装之前需要准备好以下的软件:

  1. virtualbox
  2. centos iso

安装过程

1. centos 安装

安装centos,和一般的vm安装没有什么区别,每个虚拟机推荐2Gi内存和20Gi硬盘。vm都配置一个NATHostOnly网卡,前者用于提供外网服务,后者用于宿主机管理以及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 < /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的选项,如果只是为了快速部署和体验还是挺方便的。

你可能感兴趣的