Kubernetes 基础概述
Kubernetes基础
本互动教程介绍了Kubernetes群集编排系统的基础知识。每个模块都包含Kubernetes的主要功能、概念的一些背景介绍。使用本教程,你可以了解:
- 在集群上部署容器化应用
- 集群规模化部署
- 更新容器化应用的版本
- 调试容器化应用
这些教程使用Katacoda在浏览器中运行虚拟终端,虚拟终端运行Minikube,它可在任何环境任何地方小规模的部署Kubernetes,且不需要安装任何软件或配置任何东西,每个互动教程都在自己浏览器中运行。
Kubernetes可以做什么?
使用Web服务,用户希望应用程序能够7*24小时全天运行,开发人员希望每天多次部署新的应用版本。通过应用容器化可以实现这些目标,使应用简单、快捷的方式更新和发布,也能实现热更新、迁移等操作。使用Kubernetes能确保程序在任何时间、任何地方运行,还能扩展更多有需求的工具/资源。Kubernetes积累了Google在容器化应用业务方面的经验,以及社区成员的实践,是能在生产环境使用的开源平台。
使用Minikube 部署 Kubernetes 集群
单机部署
创建Kubernetes cluster(单机版)最简单的方法是minikube:
首先下载kubectl
curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/v1.6.4/bin/linux/amd64/kubectl chmod +x kubectl
安装minikube
# install minikube $ brew cask install minikube $ brew install docker-machine-driver-xhyve # docker-machine-driver-xhyve need root owner and uid $ sudo chown root:wheel $(brew --prefix)/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve $ sudo chmod u+s $(brew --prefix)/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve
最后启动minikube
# start minikube. # http proxy is required in China $ minikube start --docker-env HTTP_PROXY=http://proxy-ip:port --docker-env HTTPS_PROXY=http://proxy-ip:port --vm-driver=xhyve
开发版
minikube/localkube只提供了正式release版本,而如果想要部署master或者开发版的话,则可以用hack/local-up-cluster.sh来启动一个本地集群:
cd $GOPATH/src/k8s.io/kubernetes export KUBERNETES_PROVIDER=local hack/install-etcd.sh export PATH=$GOPATH/src/k8s.io/kubernetes/third_party/etcd:$PATH hack/local-up-cluster.sh
打开另外一个终端,配置kubectl:
cd $GOPATH/src/k8s.io/kubernetes
export KUBECONFIG=/var/run/kubernetes/admin.kubeconfig
cluster/kubectl.sh
使用 kubectl 创建Deployment
目标
- 了解 Deployments 请求。
- 使用kubectl在Kubernetes上部署应用。
Kubernetes Deployments
为了实现在Kubernetes集群上部署容器化应用程序。需要创建一个Kubernetes Deployment,Deployment负责创建和更新应用。创建Deployment后,Kubernetes master 会将Deployment创建好的应用实例调度到集群中的各个节点。
应用实例创建完成后,Kubernetes Deployment Controller会持续监视这些实例。如果管理实例的节点被关闭或删除,那么 Deployment Controller将会替换它们,实现自我修复能力。
“在旧的世界中” ,一般通常安装脚本来启动应用,但是便不会在机器故障后自动恢复。通过在Node节点上运行创建好的应用实例,使 Kubernetes Deployment 对应用管理提供了截然不同的方法。
在Kubernetes上部署第一个应用程序
使用Kubernetes Kubectl(命令管理工具)创建和管理Deployment。Kubectl使用Kubernetes API与集群进行交互。在本学习模块中,学会在Kubernetes集群上运行应用所需Deployment的Kubectl常见命令。
创建Deployment时,需要为应用程序指定容器镜像以及要运行的副本数,后续可以通过Deployment更新来更改该这些信息; bootcamp的第5和第6部分讨论了如何扩展和更新Deployment。
知道Deployment是什么,来看看在线教程并部署你的第一个应用!