本地快速部署多节点kubernetes集群

本地快速部署多节点kubernetes集群

  1. Cool Tools 🛠️
  2. 1 year ago
  3. 4 min read

前置要求: 本机需要有Docker 容器运行时环境

Kind是什么

kind is a tool for running local Kubernetes clusters using Docker container “nodes”. kind was primarily designed for testing Kubernetes itself, but may be used for local development or CI

  • ① 使用Docker来运行k8s节点
  • ② 可以同时部署多个集群以供测试
  • ③ 支持多平台 MacOS Linux Windows

​ 当然,这只是个人推荐,也有其他的本地kubernetes集群方案可供选择,例如 MiniKube KubeKey K3s ,看个人需求吧

Kind安装

​ 安装方式很简单, 参考官网 二选一即可

  • 使用命令行(注意区分操作系统 x84 和 arm)

    # For Intel Macs
    [ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.24.0/kind-darwin-amd64
    # For M1 / ARM Macs
    [ $(uname -m) = arm64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.24.0/kind-darwin-arm64
    chmod +x ./kind
    mv ./kind /some-dir-in-your-PATH/kind
    
  • 二进制安装

    前往官方github release页面下载最新release即可

    解压后授权kind主程序 chmod +x ./kind

集群安装

​ 根据自己编写一个配置文件(yml)

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
- role: worker

我这里配置了一个控制节点和3个工作节点

使用命令直接创建集群 ./kind create cluster --config cluster-conf.yml --name kiki

  • config指定你的集群规划配置文件
  • name指定当前集群名称,可以按照这种方式部署多个kubernetes集群

执行命令后,会首先拉取Docker镜像,好处就在于不用管kubernetes集群创建时的各种镜像问题

image-20240928205646293

等待命令执行完成(镜像拉取成功后1min左右即可安装集群安装),你就有了一个指定节点数量和角色的集群,如下

image-20240928205806027

kubectl 工具在kind的资源包中是不包含的,需要自行下载安装, 什么是kubectl?

简单查看一下集群的状态,所有pod处于running状态便表示安装成功

kubectl get pod -o wide --all-namespaces

image-20240928210012804

控制面板

推荐使用官方Dashboard, 简单兼容性高, 当然自己也可以选择像 Kuboard Rancher Kubesphare 等第三方管理工具

新版Dashboard已经从CRD方式切换为使用Helm方式,简单2条命令即可完成安装

helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard

image-20240928211139722

等待安装完成,开启Web访问(二选一)

  • 端口转发: kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard-kong-proxy 8443:443
  • kube proxy: kubectl proxy --port=8001
访问令牌
  1. 创建ServiceAccount

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: admin-user
      namespace: kubernetes-dashboard
    
  2. 创建ClusterRoleBinding

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: admin-user
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
    subjects:
    - kind: ServiceAccount
      name: admin-user
      namespace: kubernetes-dashboard
    
     kubectl apply -f serviceAccount.yml
    serviceaccount/admin-user created
     kubectl apply -f clusterRoleBinding.yml
    clusterrolebinding.rbac.authorization.k8s.io/admin-user created
    
  3. 获取token

    kubectl -n kubernetes-dashboard create token admin-user
    

    image-20240928212010538

  4. 网页访问

    我这里采用端口转发的方式开启web访问入口,地址 https://localhost:8443 注意是https

    image-20240928211755900

​ 使用第三步获取到的token即可登录

​ 至此, 一个本地基于Docker构建的多节点kubernetes集群已经构建完成,可以使用来作为学习 测试部署和CICD了 image-20240928215311429

Tool Kubernetes