本文主要讲解 minikube(kubernetes单机部署版)的安装,启动。并通过它来简单测试 kubernetes 怎么部署一个服务。
简介
kubernetes是一个Google开源的容器编排系统,用于自动部署,扩展和管理容器化应用程序。
minikube 是一个方便在本地运行 kubernetes 的工具,它通过在本机 VM 里运行一个单节点 kubernetes 集群,帮助我们尝试 kubernetes和适于开发。
下面示例是基于Ubuntu 16.04 安装minikube
安装 Docker CE
安装 kubectl
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
# 赋二进制文件执行权限.
chmod +x ./kubectl
# 将二进制文件移到 PATH 中
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl version
安装 minikube
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
minikube version
启动 minikube
sudo minikube start --vm-driver=none
首次启动会下载localkube等,如果需要网络代理,请通过下面方式
#设置系统代理
export http_proxy=http://address:port
export https_proxy=http://address:port
# 安装
minikube start --vm-driver=none
#当出现 *下载完成 开启启动集群* 的时候,按 ctrl+c 停止
#解除系统代理
unset http_proxy
unset https_proxy
#清理
kubeadm reset
#重新运行
minikube start --vm-driver=none
启动 dashboard
minikube dashboard --url
启动一个服务
# --port=8080是容器的端口
kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.10 --port=8080
kubectl expose deployment hello-minikube --type=NodePort
kubectl get pod
curl $(minikube service hello-minikube --url)
Kubernetes 三种暴露服务的方式:
- LoadBlancer Service:LoadBlancer Service 是 kubernetes 深度结合云平台的一个组件;当使用 LoadBlancer Service 暴露服务时,实际上是通过向底层云平台申请创建一个负载均衡器来向外暴露服务;目前 LoadBlancer Service 支持的云平台已经相对完善,比如国外的 GCE、DigitalOcean,国内的 阿里云,私有云 Openstack 等等,由于 LoadBlancer Service 深度结合了云平台,所以只能在一些云平台上来使用。
- NodePort Service:NodePort Service 顾名思义,实质上就是通过在集群的每个 node 上暴露一个端口,然后将这个端口映射到某个具体的 service 来实现的,虽然每个 node 的端口有很多(0~65535),但是由于安全性和易用性(服务多了就乱了,还有端口冲突问题)实际使用可能并不多。
- Ingress:Ingress 这个东西是 1.2 后才出现的,通过 Ingress 用户可以实现使用 nginx 等开源的反向代理负载均衡器实现对外暴露服务。
删除服务
kubectl delete services hello-minikube
kubectl delete deployment hello-minikube
minikube stop