美文网首页
使用minikube快速搭建本地环境

使用minikube快速搭建本地环境

作者: 猴子精h | 来源:发表于2017-10-27 11:44 被阅读2172次

前言

Kubernets现在这么火,我们再不学学真怕调队了,我学习一门新东西的办法就是快速上手去体验一番,那些具体的概念可以先放一放;俗话说:工欲善其事,必先利其器,那么我们就先快速地搭建一个环境来体验下。

安装的方式

Kubernets官方提供三种部署方式:

  • MiniKube: Minikube可以实现一种轻量级的Kubernetes集群,通过在本地计算机上创建虚拟机并部署只包含单个节点的简单集群。Minikube适用于Linux,MacOS和Windows系统。Minikube CLI提供集群管理的基本操作,包括 start、stop、status、 和delete。

  • kubeadm: kubeadm是Kubernetes1.6开始官方推出的快速部署Kubernetes集群工具,其思路是将Kubernetes相关服务容器化(Kubernetes静态Pod)以简化部署。

  • Custom solutions: 最完整的方式,从零开始搭建。

显而易见,MiniKube的方式是最简单的,下面我们就来介绍这种安装方式,主要是想把里面的坑给大家说说。

Minikube

环境:MacOS

minikube其实就是启动了一个Linux 虚拟机,这里虚拟机中包含Docker容器、Kubernetes的全部组件。所以需要你的环境支持虚拟化,目前Mac支持的虚拟化有xhyve driver, VirtualBox, or VMware Fusion,这些需要先准备好。

  1. 安装kubectl

    brew install kubectl
    
    kubectl version 
    
  2. Install Minikube

    curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64 && \
    chmod +x minikube && \
    sudo mv minikube /usr/local/bin/
    
  3. 通过minikube启动一个k8s的集群

    # 指定了hypervisor, 我这里使用的是VirtualBox
    minikube start --vm-driver=virtualbox
    

    通过minikube start之后,你就可以在virtualbox中看到一台新建的虚拟机了, 同时在命令行可以输入minikube ssh就能直接登入到虚拟机了,更多命令请见minikube --help

    minikube virtualbox.png

另:部署kubernets dashboard

kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

启动一个容器并提供服务

以上的步骤完成都很轻松,下面我们就使用kubetl启动一个容器并提供服务:

创建一个deployment

kubectl run hello-world --image=nginx:1.7.9 --port=80

查看deplopment:

kubectl get deployments
NAME          DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
hello-world   1         1         1            0           8s

查看pod:

kubectl get pods

可以看到pod一直处于ContainerCreating状态

NAME                          READY     STATUS              RESTARTS   AGE
hello-world-277264851-r8q3n   0/1       ContainerCreating   0          17s

使用kubectl describe pods hello-world-277264851-r8q3n看下这个pod, 可以看到一个Error syncing pod

minikube.png

使用minikube logs来查看下有什么错误:

Oct 27 02:55:21 minikube localkube[3057]: E1027 02:55:21.404996    3057 kuberuntime_sandbox.go:54] CreatePodSandbox for pod "nginx-deployment-431080787-6w421_default(7d61ad84-bac1-11e7-a3f5-080027bf293b)" failed: rpc error: code = 2 desc = unable to pull sandbox image "gcr.io/google_containers/pause-amd64:3.0": Error response from daemon: {"message":"Get https://gcr.io/v1/_ping: dial tcp 74.125.204.82:443: i/o timeout"}

可以看到连接gcr.io的仓库超时了,所以就需要翻墙了,下面假设你有个支持http proxy的网络代理翻墙;(Mac上可以直接使用shadowsocks-NG开启HTTP的支持, 如果是shadowsocks, 就需要使用privoxy将sock5转换成http)

这里有个问题需要注意下,开启Mac上的shadowsocks并不会对terminal下生效, 你需要有个http proxy,在terminal中export http_proxy=x.x.x.x, 大部分的 Linux 程序都会感知这两个环境变量,并使用代理访问网络;

在使用minikue启动集群的时候指定代理地址(因为只支持http代理模式):

https_proxy=<my proxy> minikube start --docker-env HTTP_PROXY=<my proxy> --docker-env HTTPS_PROXY=<my proxy> --docker-env NO_PROXY=192.168.99.0/24

这时候查看deployment和pod都running了

kubectl get pods

NAME                          READY     STATUS    RESTARTS   AGE
hello-world-277264851-pbb3l   1/1       Running   0          16s

kubectl get deployments

NAME          DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
hello-world   1         1         1            1           43s

接着使用service为容器暴露一个对外访问的端口:

kubectl expose deployment hello-world --type=NodePort

查看刚创建的serivce:

kubectl get services

NAME          TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
hello-world   NodePort    10.0.0.72    <none>        80:32078/TCP   14m
kubernetes    ClusterIP   10.0.0.1     <none>        443/TCP        55m

minibute service将打开你本地的浏览器去访问这个应用,

# minikube service [-n NAMESPACE] [--url] NAME
# --url:将返回访问的URL 

minikube service hello-world
nginx.png

最后

其实搭建还是挺简单的,大部分时间都是花在网络问题上,环境有了,接下来就应该去熟悉kubernets里面的概念了,什么是pods, deployments, services等等,期待下篇吧!

相关文章

网友评论

      本文标题:使用minikube快速搭建本地环境

      本文链接:https://www.haomeiwen.com/subject/iryrpxtx.html