相关文章推荐
憨厚的香烟  ·  C#反射和特性 - 知乎·  3 年前    · 
失恋的铁板烧  ·  HttpListenerRequest.Ur ...·  3 年前    · 
大力的八宝粥  ·  Fetch ...·  3 年前    · 
MacOS下安装minikube并简单体验特性

前文的基础概念先熟悉了下,看了一个视频里,通过minikube演示的一些特性。于是便想自己也动手敲一敲,简单体验下Kubernetes的一些特性。

minikube安装

关于minikube的Drivers

minikube支持VM、Container、bare-metal三种部署方式,bare-metal没找到相关信息,我猜测可能是连接本地物理Kubernetes集群。官方文档不同平台支持的方式如下图:

可以看到,Docker方式官方都是建议首选。网上大部分的资料基本是基于VirtualBox,我也尝试了,也没什么问题。

VirtualBox

如果选择VirtualBox方式需要安装 下载连接

MacOS最近的高版本下小问题挺多,首先就是Homebrew更新问题,这个网上比较多自己找。另外高版本MacOS对于安全校验严格了,在安装时需要赋权,否则会报权限不足。完整命令如下:

# 授权,否则会报权限不足错误
sudo chown -R `whoami` /usr/local/Homebrew/
sudo chown -R $(whoami) $(brew --prefix)/*
sudo chown -R `whoami` /usr/local/Frameworks/
## minikube安装命令
brew install minikube

启动过程中最大的问题就是网络,如果没有vpn,还是要把源替换成国内的。

  • docker方式
  • # docker方式
    minikube start --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'
    

    ​ 如图说明启动成功

  • VirtualBox
  • # VirtualBox
    minikube start --vm-driver=virtualbox --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'
    

    ​ 如图说明启动成功

    一些管理命令

    minikube status # 停止minikube minikube stop # 删除集群 minikube delete
    # 查看集群节点状态
    kubectl get nodes
    

    Kubernetes简单特性体验

    API YAML格式描述概述

    在开始之前,有必要熟悉下描述deployment资源的YAML文件中的格式,以下面测试的nginx-deployment为例:

    apiVersion: apps/v1    #指定api版本
    kind: Deployment    #指定创建资源的角色/类型,可以是Deployment,也可以是Pod
    metadata:    #资源的元数据/属性 
      name: nginx-deployment    #资源的名字,在同一个namespace中必须唯一  
    spec:    #指定该资源的内容,期望的状态等
      selector:
        matchLabels:
          app: nginx
      replicas: 2    #期望的副本数量
      template:    #因为是deployment,此处以下是Pod的定义
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx    #容器名字
            image: nginx:1.14.2    #镜像地址
            ports:    #容器对外端口
            - containerPort: 80
    

    提交一个 nginx deployment

    首先通过命令

    kubectl get deployments
    

    可以看到目前集群中没有deployment资源

    打开新的命令窗口,输入以下命令,通过watch机制来监测deployments的状态:

    kubectl get --watch deployments
    

    此窗口可以观察deployment资源的变化情况,先放一边。

    执行以下命令:

    kubectl apply -f https://kubernetes.io/examples/application/deployment.yaml
    

    观察deployment.yaml可发现期望是副本数量为2,版本为nginx:1.14.2。

    通过watch窗口打印如下:

    再通过describe命令查看deployments:

    kubectl describe deployment nginx-deployment
    

    一切信息都符合预期,最后一行是deploymentController的信息,也在正常管理deployments的生成。

    升级 nginx deployment

    下面尝试把nginx版本升级为1.16.1,修改资源yaml文件的镜像版本image,如下

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      selector:
        matchLabels:
          app: nginx
      replicas: 2
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.16.1 # Update the version of nginx from 1.14.2 to 1.16.1
            ports:
            - containerPort: 80
    

    执行命令:

    kubectl apply -f https://kubernetes.io/examples/application/deployment-update.yaml
    

    可以看见deployment向期望值渐进的过程。describe命令查看信息:

    可以看见nginx版本已经升级为1.16.1,并且deploymentController的调度过程是启动新的,停一个旧的,再启动新的,停旧的。

    扩容 nginx deployment

    把资源yaml文件的期望数量replicas修改为4:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      selector:
        matchLabels:
          app: nginx
      replicas: 4 # Update the replicas from 2 to 4
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            ports:
            - containerPort: 80
    

    执行命令:

    kubectl apply -f https://kubernetes.io/examples/application/deployment-scale.yaml
    

    describe命令查看信息:

    小小体验结束了,使用kubectl delete deployments nginx-deployment删除测试的deployment。接下来我会尝试自己搭建一个本地Kubernetes集群环境。

    分类:
    后端
    标签: