kubernetes教程(基础篇)

 

参考官网:https://kubernetes.io/docs/tutorials/

Kubernetes协调一个高度可用的计算机集群,这些计算机连接起来作为一个单元工作。

Kubernetes中的抽象允许您将容器化应用程序部署到集群,而无需将它们专门绑定到单个计算机上。为了利用这种新的部署模型,应用程序需要以一种将它们与单个主机分离的方式打包:它们需要集装箱化。与过去的部署模型相比,容器化应用程序更加灵活和可用,其中应用程序直接安装到特定计算机上,因为程序包深度集成到主机中。Kubernetes以更有效的方式自动化跨集群分发和调度应用程序容器。

 

 

1.创建集群

 

安装官网步骤安装完环境后,就开始创建一个集群。

minikube start --vm-driver=xhyve

2.部署应用程序(deployments)

 

一旦运行了Kubernetes集群,就可以在其上部署容器化应用程序。创建Kubernetes Deployment配置。

获取节点信息:

kubectl get nodes

创建第一个应用

kubectl run kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 --port=8080

查看是否成功

kubectl get deployments

查看单个

kubectl describe deployments/applicationstore

创建应用程序实例后,Kubernetes Deployment Controller会持续监视这些实例。如果托管实例的节点关闭或被删除,则Deployment控制器会替换它。这提供了一种自我修复机制来解决机器故障或维护问题。

创建部署时,Kubernetes创建了一个Pod来托管您的应用程序实例。Pod是一个Kubernetes抽象,表示一组一个或多个应用程序容器(如Docker或rkt),以及这些容器的一些共享资源。

Pod中的容器共享IP地址和端口空间,始终位于同一位置并共同调度,并在同一节点上的共享上下文中运行。

 

3.对外提供服务(services)

 

尽管每个Pod都具有唯一的IP地址,但如果没有服务,这些IP不会在群集外部公开。服务允许您的应用程序接收流量。通过type在ServiceSpec中指定a ,可以以不同方式公开服务

  • ClusterIP(默认) - 在群集中的内部IP上公开服务。此类型使服务只能从群集中访问。
  • NodePort - 使用NAT在集群中每个选定节点的同一端口上公开服务。使用可从群集外部访问服务<NodeIP>:<NodePort>。ClusterIP的超集。
  • LoadBalancer - 在当前云中创建外部负载均衡器(如果支持),并为服务分配固定的外部IP。NodePort的超级用户。
  • ExternalName - externalName通过返回带有名称的CNAME记录,使用任意名称(在规范中指定)公开服务。没有使用代理。此类型需要v1.7或更高版本kube-dns

获取pods信息

kubectl get pods

获取services信息

kubectl get services

使用expose命令对外暴露deployments

kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080

再次获取services信息,你就可以看到你的services了。

 

4.扩展应用(同一个服务添加副本数)

 

当流量增加时,我们需要扩展应用程序以满足用户需求。

使用scale命令

kubectl scale deployments/kubernetes-bootcamp --replicas=4

再次查看deploymnets,你会发现副本数变成了4个。表示成功了。

kubectl get deployments

5.更新应用(还可以做回滚)

 

用户希望应用程序始终可用,开发人员应该每天多次部署新版本的应用程序。在Kubernetes中,这是通过滚动更新完成的。滚动更新允许通过使用新的实例逐步更新Pods实例来实现部署的更新,而无需停机。新的Pod将在具有可用资源的节点上进行调度。

滚动更新允许以下操作:

  • 将应用程序从一个环境推广到另一个环境(通过容器映像更新)
  • 回滚到以前的版本
  • 持续集成和持续交付应用程序,无需停机

通过设置不同的docker image镜像版本实现

kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2

线上代码有问题,快速回滚:

kubectl rollout status deployments/kubernetes-bootcamp

查看历史版本:

kubectl rollout history deployment/nginx-deployment

以上内容仅限于命令行的方式,供你了解一些k8s的基础命令。下一章节,我将介绍使用配置的方式,如何将线上服务部署到k8s中,并对外提供服务,自动更新回滚代码等。

1.kubernetes 初探 简要介绍K8s平台、主要功能和社区开发情况,并通过分析企业云平台需求总结企业在应用和搭建K8s平台时需要解决的各种问题,从而引出系列课程。 2.上手Kubernetes:基本概念、安装和命令行工具kubctl 介绍K8s在不同场景下的安装方式。并通过命令行工具kubectl的介绍和Demo帮助听众了解Kubernetes的主要功能和基本使用场景 3.Kubernetes的资源调度 介绍K8s中调度器模块的基本实现,包括调度场景和功能等,从而帮助用户理解如何配置K8s资源以实现自定义的资源分配。 4.Kubernetes的运行时:Kubelet 本讲将从K8s运行时组件Kubelet出发,介绍Kubernetes运行时的基本功能和架构。并通过介绍目前流行的各种容器引擎与Kubernetes的集成帮助开发者和拥护了解K8s CRI项目。 5.Kubernetes的网络管理 本讲介绍了目前K8s平台的主要网络解决方案,包括Kube-Proxy、CNI等模块,并介绍Kubernetes与目前流行的Calico平台的集成从而实现网络隔离 6.Kubernetes的存储管理 本讲介绍了K8s持久化存储平台的基本概念、使用场景、设计架构和目前社区开发状态。并通过对PV Controller等关键存储模块的剖析展示了K8s持久化存储平台的实现细节。 7.Kubernetes的日志与监控 介绍ELK日志分析平台及其与K8s/ICp的集成,从而能够在K8s平台上实现日志分析 8.Kubernetes的应用部署 介绍K8s Helm/Charts平台以及如何使用Helm命令部署K8s应用,并通过ICp作为实例介绍K8s上应用仓库的搭建 9.扩展Kubernetes生态:Service Catalog的概念与应用 本讲从Service Catalog的角度介绍了K8s平台如何与企业传统IT服务相集成,并详细介绍了Service Catalog项目的设计与实现 10.Kubernetes的企业实践 本讲在前九讲的基础上总结了目前企业应用Kubernetes所存在的各种问题,介绍了IBM基于Kubernetes搭建的下一代私有云平台ICp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值