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

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

 个人主页:个人主页​​​​​             

 系列专栏:【云原生系列】

与这篇相关的文章:            

【云原生】2.1 Kubernetes基础概念 【云原生】2.1 Kubernetes基础概念_程序猿追的博客-CSDN博客
【云原生】2.2 kubeadm创建集群 【云原生】2.2 kubeadm创建集群_程序猿追的博客-CSDN博客
【云原生】2.3 Kubernetes 核心实战(上) 【云原生】2.3 Kubernetes 核心实战(上)_程序猿追的博客-CSDN博客

目录

一、前言

1、Kubernetes 扩缩容性

2、自愈与故障转移

3、滚动更新

4、版本回退

二、Service服务暴露方式

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

1、安装 Ingress

2、域名访问

3、路径重写

4、流量限制


一、前言

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

1、Kubernetes 扩缩容性

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

【云原生】2.4 Kubernetes 核心实战(中)_第1张图片

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

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

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

【云原生】2.4 Kubernetes 核心实战(中)_第2张图片

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

4、版本回退

历史记录

kubectl rollout history deployment/my-dep


查看某个历史详情

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

回滚(回到上次)

kubectl rollout undo deployment/my-dep

回滚(回到指定版本)

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

二、Service服务暴露方式

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

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

暴露Deploy

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

使用标签检索Pod

kubectl get pod -l app=my-dep

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

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

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

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

注意: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

 检查安装的结果

kubectl get pod,svc -n ingress-nginx

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

【云原生】2.4 Kubernetes 核心实战(中)_第3张图片

 【云原生】2.4 Kubernetes 核心实战(中)_第4张图片

 官网地址:Welcome - NGINX Ingress Controller

2、域名访问

vi ingress-rule.yaml 写入命令

【云原生】2.4 Kubernetes 核心实战(中)_第5张图片

3、路径重写

【云原生】2.4 Kubernetes 核心实战(中)_第6张图片

4、流量限制

【云原生】2.4 Kubernetes 核心实战(中)_第7张图片


下篇预告Kubernetes 核心实战(下)

 (求关注)持续更新中……

你可能感兴趣的:(云原生系列,云原生,kubernetes,云计算,docker)