目录

一、前言

1、Kubernetes 扩缩容性

2、自愈与故障转移

3、滚动更新

4、版本回退

二、Service服务暴露方式

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

1、安装 Ingress

2、域名访问

3、路径重写

4、流量限制


一、前言

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

1、Kubernetes 扩缩容性

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

KubeSphere 安装 Ingress kubectl get ingress_Pod

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

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

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

KubeSphere 安装 Ingress kubectl get ingress_云计算_02

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 暴露的端口要放行

KubeSphere 安装 Ingress kubectl get ingress_docker_03

 

KubeSphere 安装 Ingress kubectl get ingress_云原生_04

 官网地址:Welcome - NGINX Ingress Controller

2、域名访问

vi ingress-rule.yaml 写入命令

KubeSphere 安装 Ingress kubectl get ingress_云计算_05

3、路径重写

KubeSphere 安装 Ingress kubectl get ingress_云原生_06

4、流量限制

KubeSphere 安装 Ingress kubectl get ingress_Pod_07

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