利用kubeadm部署一套高可用的k8s集群

Kubernetes最低安装要求如下:

  • 2个CPU和2GB内存
  • 支持本地存储卷和Docker的Linux操作系统
  • kubelet、kubeadm 和 kubectl 工具,版本>1.6
  • Docker,版本>18.06
  • 身份认证授权 设置工具,如RBAC(基于角色的访问控制)
  • 集群网络插件,如Flannel、Calico等
    Kubernetes需要以下镜像完成集群的部署:
- kube-apiserver:k8s的API服务进程镜像
- kube-controller-manager:控制器管理器进程镜像 
- kube-scheduler:k8s调度器进程镜像
- kube-proxy:k8s网络代理进程镜像
- etcd:键值存储数据库镜像,用于存储k8s的集群数据
- pause:临时容器镜像,用于持有网络和存储资源
- coredns:k8s的Cluster DNS插件镜像

以上为最基本的镜像,一般我们还会使用以下镜像:

  • dashboard: web UI仪表板插像
  • metric-server: k8s的资源监控和metrics API插像
  • ingress-nginx: ingress控制器插像

  • 在使用kubeadm工具部署Kubernetes集群时,这些镜像会被自动拉取。我们也可以自己将所需要的镜像提前拉取下来,在环境不通外网的情况下使用。
    镜像列表详见Kubernetes的发布版本文档,以v1.20.1为例:
k8s.gcr.io/kube-apiserver:v1.20.1
k8s.gcr.io/kube-controller-manager:v1.20.1  
k8s.gcr.io/kube-scheduler:v1.20.1 
k8s.gcr.io/kube-proxy:v1.20.1
k8s.gcr.io/pause:3.2 
k8s.gcr.io/etcd:3.4.13-0     
k8s.gcr.io/coredns:1.7.0  

这里介绍如何使用kubeadm工具部署一个高可用的Kubernetes集群:

  1. 环境准备
  • 准备3台虚拟机或物理机,配置主机名和hosts文件,开启ipvs、iproute2、conntrack等内核模块。
  • 所有节点安装Docker并配置镜像仓库。
  • 所有节点安装kubeadm、kubelet和kubectl。
  1. 初始化主节点
    在主节点执行以下命令初始化集群:
bash
kubeadm init --kubernetes-version=v1.20.1 --pod-network-cidr=10.244.0.0/16  --control-plane-endpoint "your_apiserver_lb_ip:6443"

其中control-plane-endpoint指定apiserver负载均衡的IP和端口。
3. 部署网络插件

bash
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
  1. 加入工作节点
    在工作节点执行:
bash 
kubeadm join your_apiserver_lb_ip:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash> 

用主节点输出的kubeadm join命令加入集群。
5. 验证高可用性
在主节点部署一个测试应用:

bash
kubectl run nginx --image=nginx 
kubectl expose deploy nginx --port=80 --type=NodePort

通过工作节点的IP+服务的NodePort访问该服务,确认可用。
6. 配置haproxy做apiserver LB
在LB节点安装haproxy,并配置apiserver的负载均衡:

bash
listen kube-apiserver-https
    bind 0.0.0.0:6443
    mode tcp
    option tcplog
    balance roundrobin
    server master1 your_master1_ip:6443 check
    server master2 your_master2_ip:6443 check 

重启haproxy后,集群的高可用部署完成。
通过以上步骤,我们利用kubeadm工具快速部署了一个高可用的Kubernetes集群。Kubeadm大大降低了部署Kubernetes集群的难度,让应用可以更轻松地驾驭Kubernetes的调度与伸缩能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值