54 [十二基于k8s部署服务] :k8s

目录


一、k8s

1、pod

容器组就是pod
创建工作负载就是创建镜像,创建服务service就是创建容器组(pod)
一个pod可以包含多个service容器,好处是组内服务网络互通,访问不同服务就像访问本地服务一样。
一个pod内很多东西都是共享的,比如pvc(存储卷)、configmap(配置字典)、secret(保密字典)

在这里插入图片描述

2、kubectl相关的pods命令

命令功能
kebectl get namespaces获取所有namespaces查看所有项目
kubectl get pods -A查看所有pod(容器组)
kubectl run nginx --image=nginx --namespace=mxshop将nginx镜像部署到mxshop项目下,成为nginx容器组。注意这里删除容器组不会重建,因为没有部署工作负载
kubectl get pods --namespace=mxshop -l “app=user-service”获取标签“lable” 为user-service的pod。这个app=uesr-service是在添加工作负载最后一步“添加元数据”设置的
kubecl logs --namespace=mxshop -l “app=user-service”查看指定pod的日志
kubectl get pods --namespace=mxshop -l “app=user-service” -o wide查看pods更多信息
pods相关命令pods更多相关命令

3、k8s的控制器-deployment

工作负载是容器组的控制器。
没有什么是加一层解决不了的问题,加一层控制器就可以解决上面无法管理容器组的问题
Kubernetes中内建了很多controller(控制器),这些相当于一个状态机,用来控制Pod的具体状态和行为
1、Deployment:适合无状态的服务部署,如user-service
2、StatefullSet:适合有状态的服务部署,如mysql服务
3、DaemonSet:一次部署,所有的node节点都会部署,例如一些典型的应用场景:

  • 运行集群存储 daemon,例如在每个Node上运行 glusterd、ceph
  • 在每个Node上运行日志收集 daemon,例如 fluentd、 logstash
  • 在每个Node上运行监控 daemon,例如 Prometheus Node Exporter
    4、Job:一次性的执行任务
    5、Cronjob:周期性的执行任务
    在这里插入图片描述
  1. deployment
    a. 副本 replices 去设置启动多少个实例
    b. spec:设置容器相关的信息:如从哪个镜像来,cpu设置多少,端口映射,数据挂载
    c. 更新策略
    1)我升级版本啦,如果我停掉之前的版本,然后上线新的版本,有一段时间服务不可用,
    2)采用滚动更新可以不用停止服务(先使用旧服务,当新服务启动好,让旧服务下线,使用新服务)
  2. 如何获取某个pod的deployment
    kubectl get deployment --namespace=mxshop -l “app=user-service” -o yaml > ./user-service.yaml
    将yaml输出成user-service.yaml,让后cat user-service.yaml即可
  3. 官方文档
    如何使用命令部署工作负载,查看官方文档->概念->工作负载->工作负载资源->Deployment
    官方文档

4、Service

主要用来做负载均衡的,目前k8s只支持http短连接
在这里插入图片描述
对grpc请求,仍需本地做一个picker,k8s的service以后将会支持grpc负载均衡
由service创建的node-port类似pod

命令解释
kubectl apply 。。。应用yaml配置,创建service,具体看文档
kubectl get services --namespace=mxshop -l “app=user-service-nodeport”列出指定service
kubectl patch 。。。更新某个字段

其他命令对照pod即可

5、ingress

ingress主要用来对外访问的,ingress屏蔽虚拟ip,以域名的方式访问
在这里插入图片描述
ingress功能:统一各服务域名,由路径区别具体服务
在这里插入图片描述

6、持久卷(pvc)

存储卷文档
主要用以下几个
1.hostpath在这里插入图片描述
2.local
在这里插入图片描述
3.nfs
在这里插入图片描述
4.cephfs
在这里插入图片描述

7、configmap\secret

configmap
configmap即配置文件;和密码/秘钥相关的要保存到保密字典(secret)
有哪些要配置secret?
如:
在这里插入图片描述
在这里插入图片描述

8、架构图

模块功能
实体机对应node
api-server负责接收网络请求
controller manager负责决定将各类服务部署到哪个node
etcd负责存储服务部署关系等集群信息
secheduler负责调度,如定时任务\某个容器再启动一次
主节点负责将服务或请求分发到不同节点
kubelet负责具体创建pod部署服务.kubelet负责node上所有pod的生命周期,如pod启动\暂停\删除
kube-proxy负责网络,请求分发. 各node网络互通,kube-proxy会将请求转发到目的node

在这里插入图片描述
在这里插入图片描述

9、总结

三个阶段
go基础知识讲解 - 第一个阶段
微服务阶段 - 第二个阶段 (知识面)
单体应用开发, gin
从0开始讲解,自己集成的, 规范性,
先运行起来,然后再深入
负载均衡, 限流熔断(负载均衡算法原理、熔断限流的原理) - 建议大家去看一下网上的资料深入一下算法
全面: 商品系统, 订单系统
商品系统,订单系统(很复杂的系统): 深入的地方
面试的时候都会很容易通关的, 订单系统(分布式事务-并发要求肯定就没有商品系统)
商品系统强调不是事务,并发,
抢购 - 订单系统并发上升到一个数量级
规范性、工程化 : 第三个阶段(深入知识点、规范化、k8s)
gmicro框架, 微服务框架,不强调spring - 没有必要:云原生之后, 都进入到istio、k8s
k8s部署

  1. 深入学习go的基础
    1. lock锁原理、channel原理、gmp原理、context原理、gc原理
  2. 组件:
    1. 负载均衡算法
    2. 熔断限流 算法
    3. mysql: 隔离级别-mvcc, 索引调优
    4. redis:redis-cluster原理, 缓存架构、瓶颈: 10G 为什么?
    5. 分布式系统架构: es(lsm tree), rocketmq(kafka)
  3. k8s
  4. 架构:
    1. 支持高并发的商品系统
    2. 缓存系统
    3. 订单系统
    4. 抢购系统
  5. 订单系统
    1. 分布式id
    2. 能说清楚
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值