Posts 使用 minikube 搭建 kubernetes 集群
Post
Cancel

使用 minikube 搭建 kubernetes 集群

   本文使用的系统架构为Ubuntu 20.04/22.04, CPU架构为x86-64. kubectl 版本为1.23.0, minikube版本为1.28.0

1.安装kubectl

kubectl 是 kubernetes 的操作工具, 不管是 kubernetes 还是的 minikube,都用 kubectl 进行操作.阿里云上的 kubernetes 只需要给 kubectl 加上对应的配置即可操作阿里云上的 kubernetes 集群.参考通过kubectl连接Kubernetes集群

  1. 用 curl 命令下载最新发行版:
    1
    
    curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl
    
  2. 安装kubectl(我是直接安装在 root 用户下的, 如果没有 root 权限也是可以操作的.具体看参考文献的官网教程)
    1
    
    install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
    
  3. 验证安装的kubectl版本
    1
    
    kubectl version --client
    
  4. 启动 shell 自动补全
    1
    2
    3
    4
    
    # 如果是 zsh 的话
    echo "source <(kubectl completion zsh)" >> ~/.zshrc
    # 如果是 bash 的话
    echo "source <(kubectl completion bash)" >> ~/.bashrc
    

2. 安装minikube

minikube 是一个微型 kubernetes, 它具有 kubernetes 的大部分功能, s自己个人使用或者模拟生产环境用来搭建测试环境的话还是够用的(部分地区需要代理来进行安装)

  1. 安装 minikube
    1
    2
    
    curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
    install minikube-linux-amd64 /usr/local/bin/minikube
    
  2. 启动 shell 自动补全
    1
    2
    3
    4
    
    # 如果是 zsh 的话
    echo "source <(minikube completion zsh)" >> ~/.zshrc
    # 如果是 bash 的话
    echo "source <(minikube completion bash)" >> ~/.bashrc
    
  3. 启动 minikube 前需要先配置代理(proxyip 为代理的 ip, proxyport 为代理的端口)
    1
    2
    3
    4
    
    ```bash
    export HTTP_PROXY=http://$proxyip:$proxyport
    export HTTPS_PROXY=http://$proxyip:$proxyport
    export NO_PROXY=localhost,127.0.0.1,10.96.0.0/12,192.168.59.0/24,192.168.39.0/24,192.168.49.0/24
    
  4. 启动 minikube
    需要注意的是 无法 root 用户下启动 minikube
    踩过的坑: 启动 minikube 通过 –memory –cpus –disk-size 这3个参数指定要 minikube 的可用资源, 否则默认会比较小, 如果k8s内部的进程将设定的内存占满, 会导致 CPU 100%
    如果需要通过外部访问, 需要添加参数–apiserver-ips= 填写需要对外暴露的ip
    1
    
    minikube start --driver=docker --image-mirror-country='cn' --logtostderr --extra-config=kubelet.cgroup-driver=systemd --memory 6000 --cpus 4 --disk-size=40g
    

    如果遇到如下错误

    1
    
    ❌  Exiting due to GUEST_MISSING_CONNTRACK: Sorry, Kubernetes 1.23.0 requires conntrack to be installed in root's path
    

    则需要安装 conntrack

    1
    
    sudo apt install conntrack
    
  5. 查看 minikube 状态
    1
    
    minikube status
    

    预期输出结果

    1
    2
    3
    4
    5
    6
    
    minikube
    type: Control Plane
    host: Running
    kubelet: Running
    apiserver: Running
    kubeconfig: Configured
    

3.minikube 插件安装

展示所有可用插件

1
minikube addons listss

开启某个插件

1
minikube addons enable xxxx

关闭某个插件

1
minikube addons disable xxx
  1. ingress 插件安装 ingress是基于kubernetes的网关中间件, 它并不负责实际的消息分发/反向代理, 它是kubernetes和具体的网关容器(nginx/apache等)沟通的桥梁, 它默认采用的网关容器是nginx.
    1
    
    minikube addons enable ingress
    

    预期输出结果

    1
    2
    
    🔎  Verifying ingress addon...
    🌟  The 'ingress' addon is enabled
    
  2. 检查ingress运行状态
    1
    
    kubectl get pods -n ingress-nginx
    

    预期输出结果

    1
    2
    3
    4
    
    NAME                                        READY   STATUS    RESTARTS   AGE
    ingress-nginx-admission-create-2q2xg        0/1     Pending   0          2m
    ingress-nginx-admission-patch-2q2xg         0/1     Pending   0          2m
    ingress-nginx-controller-7b7b9f9b7c-2q2xg   1/1     Running   0          2m
    

4. 可能需要使用到的脚本

  1. 清理minikube中的镜像
    1
    2
    
    #!/bin/bash                 
    minikube image ls --format=table | awk '{print $6}' | xargs -I {} minikube image rm{}                                                    
    

5.Ref

  1. kubernetes 官方文档,安装 kubectl
  2. minikube 官方文档
  3. 在 Minikube 环境中使用 NGINX Ingress 控制器配置 Ingress
  4. 通过kubectl连接Kubernetes集群
This post is licensed under CC BY 4.0 by the author.

minikube(k8s)日志持久化方案

我的2022年终总结