哈喽~大家好呀,我们这篇呢继续上一篇的讲解(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 作用:它具有多副本,自愈,扩缩容等能力。
扩容性:我们在 Kubernetes 上面部署了一个应用,应用下面有很多 Pod,当我们的流量高峰期的时候,空间不够用的时候,这时,Kubernetes 就会进行扩大容量的操作(扩容kubectl scale)。
缩容性:扩容结束后,流量高峰期过后,扩容的空间就不需要用了,所以就会进行缩容操作(缩容kubectl scale)。
扩缩容命令(my-dep 是扩容与缩容的参数)
kubectl scale --replicas=5 deployment/my-dep
什么是自愈?
还是Kubernetes 上面部署了一个应用,应用下面有很多 Pod,当其中某一个 Pod出问题了,我们可以通过重启等方法进行自我修复等操作,这就叫自愈。
什么是故障转移?
有人可能就会问了,如何自愈失败呢?这时,我们将 出故障的 Pod 里面的东西转到另外一台 Pod 上面,这个就是故障转移。
还是上面的例子,Kubernetes 上面部署了一个应用,应用下面有很多 Pod,我们要将 Pod 升级到某一版本,这时 k8s 先下载好 Pod,然后在替换掉(这很像更新某一 App 一样)。
更新
kubectl set image deployment/my-dep nginx=nginx:1.16.1 --record
历史记录
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 是将一组 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 是 Service 的统一网关入口,将来我们有很多的 Service ,我们希望有个统一的域名来管理,所以出现了 Ingress nginx。
在 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 暴露的端口要放行
官网地址:Welcome - NGINX Ingress Controller
在 vi ingress-rule.yaml 写入命令
下篇预告Kubernetes 核心实战(下)
(求关注)持续更新中……