Kubernetes学习 Service + Rolling Update(三)

四、外网如何访问Service

  除了 Cluster 内部可以访问 Service,很多情况下我们也希望应用的 Service 能够暴露给 Cluster 外部。Kubernetes 提供多种类型的 Service,默认是 Cluster IP。

      (1)Cluster IP

      Service 通过 Cluster 内部的 IP 对外提供服务,只有 Cluster 内部的节点和 Pod 可访问,这是默认的 Service 类型,前面实验中的 Service 都是 CLuster IP。

    (2)NodePort

      Service 通过 Cluster 节点的静态端口对外提供服务。Cluster 外部可以通过 <NodeIP>:<NodePort> 访问 Service

    (3)LoadBalancer

      Service 利用 cloud provider 特有的 load balancer 对外提供服务,cloud provider 负责将 cload balancer 的流量导向 Service。目前支持的 cloud providerGCP、AWS、Azur等。

五、回滚

    kubectl apply 每次更新应用时, Kubernetes 都会记录下当前的位置保存为一个 revision。

    默认配置下,Kubernetes 只会保留最近几个 revision,可以在 Deployment 配置文件中通过 revisionHistoryLimit 属性增加 revision。

    实践回滚功能:

      应用有三个文件,即httpd.v1.yaml、httpd.v2.yaml、httpd.yaml 分别对应着 httpd 的三个版本 2.4.16、2.4.17、2.4.18。

                   

      kubectl apply -f httpd.v1.yaml --record

       --record 的作用是将当前命令记录到 revision 记录中,这样我们就能知道每个revision 对应是哪个配置文件了。

      通过 kubectl rollout history deployment httpd ,查看 revision。

      

      CHANGE-CAUSE 就是 --record 的结果。如果要回滚到某个版本,譬如 revision3,

      执行命令 kubectl rollout undo deployment httpd --to-revision=3

      

      

      

      

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Meslo LG S DZ for Powerline"; color: #fcfffd; background-color: rgba(0, 0, 0, 0.85) }
span.s1 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Meslo LG S DZ for Powerline"; color: #fcfffd; background-color: rgba(0, 0, 0, 0.85) }
span.s1 { }

原文地址:https://www.cnblogs.com/Lyh1997/p/10280121.html

时间: 2024-11-08 11:14:22

Kubernetes学习 Service + Rolling Update(三)的相关文章

kubernetes学习Service之headless

一.首先说headless Service和普通Service的区别headless不分配clusterIPheadless service下的Pod有DNS地址,可以通过Pod的DNS地址解析到Pod的IP地址普通的service下的Pod没有DNS,只能通过svc的DNS解析到svc的clusterIP Service的ClusterIP工作原理:一个service可能对应一组endpoints(所有pod的地址+端口),client访问ClusterIP,通过iptables或者ipvs转

kubernetes 学习 service相关

1:         service有什么用? 直接通过Pod的IP地址和端口号可以访问容器应用,但是pod的IP地址是不可靠的,比如POD出现故障后,有可能在另外一个NOde上启动,这样Pod的IP地址就发生变化. 另外,如果容器本事是分布式的部署方式,通过多个实例一起提供服务,那么需要一个负载均衡器. k8s的service就是解决以上问题的.     关键配置: clusterIP:  给servcie分配一个虚拟IP. NodeIP:    让service和Node拥有同样的IP. 2

ASP.NET Core on K8S深入学习(5)Rolling Update

本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章. 一.什么是Rolling Update? 为了服务升级过程中提供可持续的不中断的服务,K8S提供了Rolling Update机制,它可以使得服务近乎无缝地平滑升级,即在不停止对外服务的前提下完成应用的更新.滚动更新采用渐进的方式逐步替换旧版本Pod,如果更新不如预期,那么也可以通过回滚操作恢复到更新前的状态. 滚动更新的最大好处在于零停机,整个更新过程始终有副本在运行,从而保证了业务

kubernetes的rolling update机制解析

commit: d577db99873cbf04b8e17b78f17ec8f3a27eca30 Date: Fri Apr 10 23:45:36 2015 -0700 0.命令行和依赖的基础知识 Synopsis Perform a rolling update of the given ReplicationController. Replaces the specified controller with new controller, updating one pod at a tim

kubernetes学习14—Dashboard搭建和认证

原文:kubernetes学习14-Dashboard搭建和认证 本文收录在容器技术学习系列文章总目录 一.介绍 Kubernetes Dashboard是Kubernetes集群的基于Web的通用UI.它允许用户管理在群集中运行的应用程序并对其进行故障排除,以及管理群集本身. 二.搭建dashboard 1.编写yaml文件 借鉴GitHub,修改了image的下载地址和pod的一些配置 [root@master ~]# vim dashboard.yaml # Filename: dashb

在 Rolling Update 中使用 Health Check - 每天5分钟玩转 Docker

上一节讨论了 Health Check 在 Scale Up 中的应用,Health Check 另一个重要的应用场景是 Rolling Update.试想一下下面的情况: 现有一个正常运行的多副本应用,接下来对应用进行更新(比如使用更高版本的 image),Kubernetes 会启动新副本,然后发生了如下事件: 正常情况下新副本需要 10 秒钟完成准备工作,在此之前无法响应业务请求. 但由于人为配置错误,副本始终无法完成准备工作(比如无法连接后端数据库). 先别继续往下看,现在请花一分钟思考

在 Rolling Update 中使用 Health Check【转】

上一节讨论了 Health Check 在 Scale Up 中的应用,Health Check 另一个重要的应用场景是 Rolling Update.试想一下下面的情况: 现有一个正常运行的多副本应用,接下来对应用进行更新(比如使用更高版本的 image),Kubernetes 会启动新副本,然后发生了如下事件: 正常情况下新副本需要 10 秒钟完成准备工作,在此之前无法响应业务请求. 但由于人为配置错误,副本始终无法完成准备工作(比如无法连接后端数据库). 先别继续往下看,现在请花一分钟思考

Azure云平台学习之路(三)——Cloud Services

1.什么是云服务? 能够部署高度可用的且可无限缩放的应用程序和API.简而言之,就是你写的CMD程序按照一定的框架进行少量修改就能运行在Azure云平台上. 2.Azure云服务有什么特点? (1)专注应用程序而不是硬件,PaaS的一种. (2)支持多种框架和语言. (3)集成了运行状况监视和负载平衡. (4)自动缩放优化成本和性能 3.建立云服务之前,我们需要建立一个云存储,来记录我们的程序的日志信息(当然,这不是必须的) (1)选择左边导航栏的"存储".主面板上显示的是所有已有的存

django学习之Model(三)QuerySet

接下来主要学习Models中的Making queries 写好models.py后,django会自动提供一个数据库的抽象API,来实现CRUD(create, retrieve, update, delete).这一部分主要就是怎样去用这些API.在data model reference会有全部的讲解. 接下来都会反复用到下边这个例子,或者在这段代码上进行扩展: from django.db import models class Blog(models.Model): name = mo