使用Kubespray部署你的第一个Kubernetes集群

使用Kubespray部署你的第一个Kubernetes集群

kubespray 一个基于Ansible的Kubernetes集群部署工具,提供自动化部署、集群管理等功能。 - 功能:Kubernetes集群部署、节点管理、容器管理、存储管理、网络管理等。 - 特点:基于Ansible;支持多种Kubernetes版本;支持离线安装;易于上手。 kubespray 项目地址: https://gitcode.com/gh_mirrors/ku/kubespray

Kubespray是一个基于Ansible的Kubernetes部署工具,它简化了Kubernetes集群的安装和配置过程。本文将详细介绍如何使用Kubespray在云环境中部署一个生产可用的Kubernetes集群。

准备工作

在开始部署前,我们需要做好以下准备工作:

  1. 云平台账号:本文以Google Cloud Platform为例,你需要一个GCP账号和项目
  2. 命令行工具:安装并配置好gcloud和kubectl工具
  3. Python环境:确保本地有Python 3环境
  4. SSH密钥:准备好用于节点访问的SSH密钥

基础设施准备

网络规划

Kubernetes需要一个平坦的网络环境,我们首先创建VPC网络和子网:

gcloud compute networks create kubernetes-cluster --subnet-mode custom
gcloud compute networks subnets create kubernetes \
  --network kubernetes-cluster \
  --range 10.240.0.0/24

防火墙规则

为集群配置必要的防火墙规则:

# 允许内部通信
gcloud compute firewall-rules create kubernetes-allow-internal \
  --allow tcp,udp,icmp,vxlan \
  --network kubernetes-cluster \
  --source-ranges 10.240.0.0/24

# 允许外部访问
gcloud compute firewall-rules create kubernetes-allow-external \
  --allow tcp:80,tcp:6443,tcp:443,tcp:22,icmp \
  --network kubernetes-cluster \
  --source-ranges 0.0.0.0/0

创建计算实例

创建3个控制平面节点和3个工作节点:

# 控制平面节点
for i in 0 1 2; do
  gcloud compute instances create controller-${i} \
    --boot-disk-size 200GB \
    --image-family ubuntu-1804-lts \
    --machine-type e2-standard-2 \
    --private-network-ip 10.240.0.1${i} \
    --subnet kubernetes \
    --tags kubernetes-cluster,controller
done

# 工作节点
for i in 0 1 2; do
  gcloud compute instances create worker-${i} \
    --boot-disk-size 200GB \
    --image-family ubuntu-1804-lts \
    --machine-type e2-standard-2 \
    --private-network-ip 10.240.0.2${i} \
    --subnet kubernetes \
    --tags kubernetes-cluster,worker
done

配置Kubespray

环境准备

创建Python虚拟环境并安装依赖:

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

配置Inventory文件

复制示例inventory并修改:

cp -rfp inventory/sample inventory/mycluster

编辑inventory/mycluster/inventory.ini文件,将节点按角色分组:

[all]
controller-0 ansible_host=10.240.0.10 ip=10.240.0.10
controller-1 ansible_host=10.240.0.11 ip=10.240.0.11
controller-2 ansible_host=10.240.0.12 ip=10.240.0.12
worker-0 ansible_host=10.240.0.20 ip=10.240.0.20
worker-1 ansible_host=10.240.0.21 ip=10.240.0.21
worker-2 ansible_host=10.240.0.22 ip=10.240.0.22

[kube_control_plane]
controller-0
controller-1
controller-2

[kube_node]
worker-0
worker-1
worker-2

集群配置

修改inventory/mycluster/group_vars/k8s_cluster/k8s_cluster.yml

supplementary_addresses_in_ssl_keys:
  - "35.205.205.80"  # 替换为你的控制节点外部IP
kube_network_plugin: calico

启用Metrics Server:

# inventory/mycluster/group_vars/k8s_cluster/addons.yml
metrics_server_enabled: true

部署集群

运行Ansible playbook部署集群:

ansible-playbook -i inventory/mycluster/ -u $USERNAME -b -v --private-key=~/.ssh/id_rsa cluster.yml

部署过程大约需要20分钟,具体时间取决于网络状况和节点配置。

访问集群

获取kubeconfig

从控制节点获取kubeconfig文件:

scp $USERNAME@$CONTROLLER_0_IP:/etc/kubernetes/admin.conf kubespray.conf

修改kubeconfig中的API服务器地址为外部IP:

apiVersion: v1
clusters:
- cluster:
    server: https://35.205.205.80:6443  # 替换为控制节点外部IP

设置环境变量使用该配置文件:

export KUBECONFIG=$PWD/kubespray.conf

验证集群状态:

kubectl get nodes

集群验证

基础功能测试

  1. Metrics Server

    kubectl top nodes
    
  2. 网络连通性

    kubectl run test-1 -it --rm --image busybox -- sh
    # 在另一个终端
    kubectl run test-2 -it --rm --image busybox -- sh
    # 互相ping测试
    
  3. 部署测试

    kubectl create deployment nginx --image=nginx
    kubectl expose deployment nginx --port 80 --type NodePort
    

服务暴露测试

获取NodePort并创建防火墙规则:

NODE_PORT=$(kubectl get svc nginx --output=jsonpath='{range .spec.ports[0]}{.nodePort}')
gcloud compute firewall-rules create allow-nginx \
  --allow=tcp:${NODE_PORT} \
  --network kubernetes-cluster

访问Nginx服务:

curl http://$WORKER_EXTERNAL_IP:$NODE_PORT

总结

通过本文,我们完成了以下工作:

  1. 在云平台上规划并创建了Kubernetes集群所需的基础设施
  2. 使用Kubespray自动化工具部署了一个高可用的Kubernetes集群
  3. 验证了集群的各项基本功能
  4. 测试了应用部署和服务暴露能力

Kubespray大大简化了Kubernetes集群的部署复杂度,特别适合需要快速搭建生产级集群的场景。通过合理的配置,你可以轻松扩展集群规模或调整集群配置。

kubespray 一个基于Ansible的Kubernetes集群部署工具,提供自动化部署、集群管理等功能。 - 功能:Kubernetes集群部署、节点管理、容器管理、存储管理、网络管理等。 - 特点:基于Ansible;支持多种Kubernetes版本;支持离线安装;易于上手。 kubespray 项目地址: https://gitcode.com/gh_mirrors/ku/kubespray

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

段钰榕Hugo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值