一、基本信息
1、部署需要满足前提条件:
- 注意1:确保各节点时区设置一致、时间同步;
- 注意2:确保在干净的系统上开始安装;
- 注意3:关闭防火墙、SElinux限制;
- 注意4:涉及到的主机SSH免密登入。
2、服务器信息如下:
由于仅仅只是演示kubeasz工具快速部署K8S集群,所以本次实验采用单Master、单Node架构,详细如下:
序号 | IP地址 | 角色 | 组件信息 |
---|---|---|---|
1 | 16.32.15.116 | K8S 控制节点 | K8S 控制节点相关组件、ETCD |
2 | 16.32.15.200 | K8S 工作节点 | K8S 工作节点相关组件 |
二、服务器初始化操作
1、关闭防火墙
systemctl disable firewalld --now
setenforce 0
sed -i -r 's/SELINUX=[ep].*/SELINUX=disabled/g' /etc/selinux/config
2、时间同步
yum -y install ntpdate
ntpdate ntp1.aliyun.com
添加定时同步 每天凌晨1点自动同步时间:
echo "0 1 * * * ntpdate ntp1.aliyun.com" >> /var/spool/cron/root
crontab -l
3、免密登入
ssh-keygen # 生产密钥对
ssh-copy-id 16.32.15.116
ssh-copy-id 16.32.15.200
三、使用Kubeasz部署K8S集群
1、下载项目源码、二进制及离线镜像
export release=3.5.0
wget https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown
chmod +x ./ezdown
2、下载离线包到本地(可能受网络因素影响会很慢,建议下载一份放到/etc/kubeasz目录下,后续走离线部署)
./ezdown -D
3、容器化运行kubeasz
./ezdown -S
docker exec -it kubeasz ezctl new k8s-01 # 创建新集群 k8s-01
sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' /etc/kubeasz/example/config.yml # 离线部署方式
4、修改hosts文件
vim /etc/kubeasz/clusters/k8s-01/hosts
[etcd]
16.32.15.116
[kube_master]
16.32.15.116 k8s_nodename='master-01'
[kube_node]
16.32.15.200 k8s_nodename='worker-01'
5、执行ansible剧本,安装K8S集群
source ~/.bashrc
dk ezctl setup k8s-01 all
如下图表示无误:
四、验证集群
1、查看集群节点信息
kubectl get nodes
2、查看Pod信息
kubectl get pods -A
3、创建Deployment资源,验证是否可以运行成功
导入镜像(工作节点执行)
注意:由于网络原因,我这边使用本地导入镜像方式。
ctr -n k8s.io image import ng18.tar.gz
crictl image|grep nginx*
创建deployment资源(控制节点执行)
cat test-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: nginx-container
image: nginx:1.18.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
kubectl apply -f test-nginx.yaml
查看创建Pod状态
kubectl get pods -o wide -w