2-1 使用kubeasz部署k8s集群

发布于:2023-02-03 ⋅ 阅读:(2105) ⋅ 点赞:(2)



简介

kubeasz项目致力于提供快速部署高可用k8s集群的工具, 同时也努力成为k8s实践、使用的参考书;基于二进制方式部署和利用ansible-playbook实现自动化;既提供一键安装脚本, 也可以根据安装指南分步执行安装各个组件。

kubeasz只需要在部署节点输入命令行,通过ansible,完成集群的搭建。


部署结构

角色 数量 描述 配置
部署节点 1 安装kubeasz,部署k8s集群。 2C 4G 50GB
etcd节点 3 集群的数据库节点,数量为奇数。 2C 4G 50GB
master节点 2 安装schedule, controller, api-server的管理节点。多台高可用,测试用2台。 4C 8G 100GB
node节点 2 安装kubelet, kube-proxy的工作节点。数量众多,性能高配。测试用2台。 8C 16G 200GB

安装kubeasz

# 下载shell脚本
export release=3.3.1
wget https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown
chmod +x ./ezdown

# 下载集群相关的bin文件和镜像
./ezdown -D

# 启动一个kubeasz部署容器
./ezdown -S

创建集群

# 创建新集群配置文件 k8s-cluster
docker exec -it kubeasz ezctl new k8s-cluster

cd /etc/kubeasz/clusters/k8s-cluster ; ls
# 安装配置和集群配置
config.yml  hosts

集群配置

主要修改集群服务器的IP地址和二进制目录,其它可以默认:

vim /etc/kubeasz/clusters/k8s-cluster/hosts

# 'etcd' cluster should have odd member(s) (1,3,5,...)
[etcd]
192.168.100.151
192.168.100.152
192.168.100.153

# master node(s)
[kube_master]
192.168.100.161
192.168.100.162

# work node(s)
[kube_node]
192.168.100.171
192.168.100.172

# Binaries Directory
bin_dir="/usr/local/bin"

集群免密登录

将上面列出的7台服务器IP和自身192.168.100.150进行免密登录,和python链接。使得ansible得以工作:

# $IP为所有节点地址包括自身,按照提示输入yes 和root密码
# 为每个节点设置python软链接
for IP in {150,151,152,153,161,162,171,172}
do
	ssh-copy-id 192.168.100.$IP 
	ssh 192.168.100.$IP ln -s /usr/bin/python3 /usr/bin/python
done

config配置

可根据需要配置。以下为示例,插件全部关闭,以后自行安装:

vim /etc/kubeasz/clusters/k8s-cluster/config.yml

# k8s 集群 master 节点证书配置,可以添加多个ip和域名(比如增加公网ip和域名)
MASTER_CERT_HOSTS:
  # 设置为负载均衡与高可用的VIP
  - "192.168.100.145"
  - "k8s.easzlab.io"

# node节点最大pod 数
MAX_PODS: 256

# coredns 自动安装
dns_install: "no"
ENABLE_LOCAL_DNS_CACHE: false

# metric server 自动安装
metricsserver_install: "no"
metricsVer: "v0.5.2"

# dashboard 自动安装
dashboard_install: "no"
dashboardVer: "v2.5.1"

部署集群

部署环节可分为7步,需要前一步正确运行完,才可以进行下一步。每步运行前5秒可取消:

01. prepare.yml
02. etcd.yml
03. runtime.yml
04. kube-master.yml
05. kube-node.yml
06. network.yml
07. cluster-addon.yml

第一步,安装前检查。会关闭selinux等环境准备工作:

cd /etc/kubeasz/
./ezctl setup k8s-cluster 01

第二步,安装etcd节点:

./ezctl setup k8s-cluster 02

PLAY RECAP ***********************************
192.168.100.151            : ok=10   changed=9
192.168.100.152            : ok=10   changed=8 
192.168.100.153            : ok=10   changed=8 

第三步,在master和node安装运行时,在config.yml配置时为containerd:

./ezctl setup k8s-cluster 03

第四步,部署管理节点。这步完成就可以使用kubectl了:

./ezctl setup k8s-cluster 04

kubectl get node
NAME              STATUS                     ROLES    AGE   VERSION
192.168.100.161   Ready,SchedulingDisabled   master   48s   v1.24.2
192.168.100.162   Ready,SchedulingDisabled   master   48s   v1.24.2

第五步,部署工作节点。再次查看node安装状态:

./ezctl setup k8s-cluster 05

kubectl get node
NAME              STATUS                     ROLES    AGE     VERSION
192.168.100.161   Ready,SchedulingDisabled   master   4m28s   v1.24.2
192.168.100.162   Ready,SchedulingDisabled   master   4m28s   v1.24.2
192.168.100.171   Ready                      node     60s     v1.24.2
192.168.100.172   Ready                      node     60s     v1.24.2

第六步,部署集群网络。在config.yml配置时为calico。完成这步可以看到pod了:
注意先在部署节点开放5000端口,因为master与node节点需要从部署节点的registry拉取镜像。

firewall-cmd --permanent --add-port=5000/tcp
firewall-cmd --reload

./ezctl setup k8s-cluster 06

kubectl get pod -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS        AGE
kube-system   calico-kube-controllers-5c8bb696bb-7rf2m   1/1     Running   0               62m
kube-system   calico-node-4xpfz                          1/1     Running   0               62m
...

节点添加与删除

添加etcd,master,node节点。首先上线新的服务器,更改好主机名,配置IP网络,拷贝免密登录公钥等基础准备:

./ezctl add-etcd k8s-cluster 192.168.100.154
./ezctl add-master k8s-cluster 192.168.100.163
./ezctl add-node k8s-cluster 192.168.100.173

删除etcd,master,node节点。直接对已有节点进行删除:

./ezctl del-etcd k8s-cluster 192.168.100.151
./ezctl del-master k8s-cluster 192.168.100.161
./ezctl del-node k8s-cluster 192.168.100.171



网站公告

今日签到

点亮在社区的每一天
去签到