k8s 基础入门
k8s中的namespace和docker中namespace是两码事,可以理解为k8s中的namespace是为了多租户,dockers中的namespace是为了网络、资源等隔离。k8s会请求底层云平台(阿里云,腾讯云、aws)上的负载均衡器(LB),将每个Node(IP+prot)作为后端添加进去,自建的云平台无法适配。pod.yaml方式创建pod,这种方式实际使用比较少,因为无法管理,无
1.namespace
k8s中的namespace和docker中namespace是两码事,可以理解为k8s中的namespace是为了多租户,dockers中的namespace是为了网络、资源等隔离
2.deployment
kubectl create #新建
kubectl aply #新建 更新
升级:
滚动升级,新版pod逐步替代老pod,用户无感知
两种升级方式:
kubectl aply
kubectl set image
#查看升级步骤
kubectl describe deployment pod名字
应用发布失败回滚
kubectl rollout history deployment/web(资源名称) #查看历史版本
kubectl rollout undo deployment/web(资源名称) #回滚上一个版本
kubectl rollout undo deployment/web(资源名称) --to-revision=2 # 回滚指定版本
扩缩容
replicas参数控制pod副本数量
1.修改yaml的replicas值,再apply
2.kubectl scale deployment web --replicas=10
应用下线
kubctl delete deploy/web(资源名称)
kubctl delete svc/wed
应该项目部署最少需要:deployment和service两个资源
deployment负责应用的部署、扩缩容、升级回滚
service负责连接路由,端口映射
3.pod
pod是k8s创建和管理的最小单元
一个pod由一个容器或者多个容器组成
一个Pod可以理解为一个应用实例,提供服务
Pod中容器始终部署在一个Node上
Pod中容器共享网络、存储资源
查看一个pod中有几个容器:
kubectl get pods pod名 -o jsonpath={.spec.containers[*].name}
kubectl get po -n tidb-cluster结果中,READY右侧是pod中容器数,左侧是启动的容器数
多个容器时,主容器遵循一个容器一个应用程序规则
pod.yaml方式创建pod,这种方式实际使用比较少,因为无法管理,无法扩缩容等等,通常通过deployment方式创建
pod.yaml:和deployment中的容器配置字段相同
4.service
端口转发、负载均衡
kubelet get ep
#查看service
kubelet get svc
集群内部指的是集群里的所有node和pod可以访问ClusterIP,TCP/IP第四层的转发
NodePort,可以集群外访问,端口默认生成,30000-32767
ss -antp | grep port号
k8s会请求底层云平台(阿里云,腾讯云、aws)上的负载均衡器(LB),将每个Node(IP+prot)作为后端添加进去,自建的云平台无法适配
5.Ingress
未弥补NodePort不足而生,实现基于域名的负载均衡转发
NodePort存在不足:
1.一个端口只能一个服务使用,端口需要提前规划
2.只支持4层负载均衡
用户访问的是ingress-controller
ingress是基于service创建的一组规则
kubectl get ingress 查看规则
更多推荐
所有评论(0)