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 查看规则

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐