【云原生】2.4 Kubernetes 核心实战(中)

简介: 我们在 Kubernetes 上面部署了一个应用,应用下面有很多 Pod,当我们的流量高峰期的时候,空间不够用的时候,这时,Kubernetes 就会进行扩大容量的操作(扩容kubectl scale)。

  哈喽~大家好呀,我们这篇呢继续上一篇的讲解(Kubernetes 核心实战(上)),接下来就直接上课吧


一、前言

上篇我们讲到Deployment 作用:它具有多副本,自愈,扩缩容等能力。

1、Kubernetes 扩缩容性

扩容性:我们在 Kubernetes 上面部署了一个应用,应用下面有很多 Pod,当我们的流量高峰期的时候,空间不够用的时候,这时,Kubernetes 就会进行扩大容量的操作(扩容kubectl scale)。

image.png

缩容性:扩容结束后,流量高峰期过后,扩容的空间就不需要用了,所以就会进行缩容操作(缩容kubectl scale)。

🎡扩缩容命令(my-dep 是扩容与缩容的参数)

kubectl scale --replicas=5 deployment/my-dep

image.gif

image.png

2、自愈与故障转移

什么是自愈?

还是Kubernetes 上面部署了一个应用,应用下面有很多 Pod,当其中某一个 Pod出问题了,我们可以通过重启等方法进行自我修复等操作,这就叫自愈。

什么是故障转移?

有人可能就会问了,如何自愈失败呢?这时,我们将 出故障的 Pod 里面的东西转到另外一台 Pod 上面,这个就是故障转移。

3、滚动更新

还是上面的例子,Kubernetes 上面部署了一个应用,应用下面有很多 Pod,我们要将 Pod 升级到某一版本,这时 k8s 先下载好 Pod,然后在替换掉(这很像更新某一 App 一样)。

更新

kubectl set image deployment/my-dep nginx=nginx:1.16.1 --record

image.gif

4、版本回退

🎡历史记录

kubectl rollout history deployment/my-dep

image.gif

🎡查看某个历史详情

kubectl rollout history deployment/my-dep --revision=2

image.gif

🎡回滚(回到上次)

kubectl rollout undo deployment/my-dep

image.gif

🎡回滚(回到指定版本)

kubectl rollout undo deployment/my-dep --to-revision=2

image.gif

二、Service服务暴露方式

Service 是将一组 Pods 公开为网络服务的抽象方法。

我们有三个 Pod,用 Service 将它们连接起来,原本三个 Pod 它们有各自的 IP 地址,现在呢?我们只需要访问 Service 的地址就可以实现服务发现与负载均衡了,api 地址就是 service 的地址,如何实现呢?

🎡暴露Deploy

kubectl expose deployment my-dep --port=8000 --target-port=80

image.gif

🎡使用标签检索Pod

kubectl get pod -l app=my-dep

image.gif

🎡NodePort 就是在集群外也可以访问

kubectl expose deployment my-dep --port=8000 --target-port=80 --type=NodePort

image.gif

🎡同样的道理,如果是集群内部的话就在后面改为 --type=ClusterIP

kubectl expose deployment my-dep --port=8000 --target-port=80 --type=ClusterIP

image.gif

🎡注意:NodePort范围在 30000-32767 之间

三、Ingress网络模型分析及安装

Ingress 是 Service 的统一网关入口,将来我们有很多的 Service ,我们希望有个统一的域名来管理,所以出现了 Ingress nginx。

1、安装 Ingress

vi ingress.yaml 里面输入命令行(因为要访问 Github,下载非常慢,所以这里就直接从阿里云里面下载)

🎡将image的值改为如下值

registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/ingress-nginx-controller:v0.46.0

image.gif

🎡 检查安装的结果

kubectl get pod,svc -n ingress-nginx

image.gif

🎡注:别忘记把 svc 暴露的端口要放行

image.png

image.png

官网地址:Welcome - NGINX Ingress Controller

2、域名访问

vi ingress-rule.yaml 写入命令

image.png

3、路径重写

image.png

4、流量限制

image.png


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
9月前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
840 33
|
10月前
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
ACK One注册集群已正式支持ACS(容器计算服务)算力,为企业的容器化工作负载提供更多选择和更强大的计算能力。
|
10月前
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
306 10
|
10月前
|
人工智能 Kubernetes 异构计算
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
549 5
|
10月前
|
Cloud Native 安全 Serverless
云原生应用实战:基于阿里云Serverless的API服务开发与部署
随着云计算的发展,Serverless架构日益流行。阿里云函数计算(Function Compute)作为Serverless服务,让开发者无需管理服务器即可运行代码,按需付费,简化开发运维流程。本文从零开始,介绍如何使用阿里云函数计算开发简单的API服务,并探讨其核心优势与最佳实践。通过Python示例,演示创建、部署及优化API的过程,涵盖环境准备、代码实现、性能优化和安全管理等内容,帮助读者快速上手Serverless开发。
|
10月前
|
Kubernetes 持续交付 数据库
阿里云ACK+GitLab企业级部署实战教程
GitLab 是一个功能强大的基于 Web 的 DevOps 生命周期平台,整合了源代码管理、持续集成/持续部署(CI/CD)、项目管理等多种工具。其一体化设计使得开发团队能够在同一平台上进行代码协作、自动化构建与部署及全面的项目监控,极大提升了开发效率和项目透明度。 GitLab 的优势在于其作为一体化平台减少了工具切换,高度可定制以满足不同项目需求,并拥有活跃的开源社区和企业级功能,如高级权限管理和专业的技术支持。借助这些优势,GitLab 成为许多开发团队首选的 DevOps 工具,实现从代码编写到生产部署的全流程自动化和优化。
|
10月前
|
人工智能 Kubernetes 异构计算
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
本教程演示如何在ACK中多机分布式部署DeepSeek R1满血版。
|
12月前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
456 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。

推荐镜像

更多