深圳排名网站网站建设管理费一能多少钱
目录
一.kubectl 命令行管理K8S
陈述式资源管理方式(可理解成使用一条kubectl命令及其参数选项来实现资源对象的管理操作)
service的4的基本类型:
service的端口
应用发布策略:
声明式资源管理方式(可理解成使用yaml配置文件里定义的配置来实现资源对象的管理操作):
K8S资源配置清单文件字段的值类型:
如何获取K8S资源配置清单文件模板(yaml配置文件):
一.kubectl 命令行管理K8S
陈述式资源管理方式(可理解成使用一条kubectl命令及其参数选项来实现资源对象的管理操作)
kubectl get -n <命名空间> <资源类型|all> [资源名称] [-o wide|yaml|json] [--show-labels] [-l 标签key=value]
                                     all包含Pod控制器、Pod、Service资源
 kubectl create -n <命名空间> <资源类型> <资源名称> [选项]
                               deployment           --image=容器镜像 --port=容器端口 --replicas=Pod副本数
 kubectl run <Pod资源名称> --image=容器镜像 --port=容器端口 
kubectl delete -n <命名空间> <资源类型> <资源名称>|--all [--force --grace-period=0]
                                                           立即终止Pod容器并强制删除(默认等待30s)
 kubectl describe  -n <命名空间> <资源类型> <资源名称>
kubectl exec -n <命名空间> -it <Pod资源名称> [-c 容器名称] -- sh|bash|Linux命令
kubectl logs -n <命名空间> <Pod资源名称> [-c 容器名称] [-f] [-p]
                                                              查看Pod容器重启前的日志
 kubectl scale -n <命名空间> <Pod控制器资源类型> <资源名称> --replicas=Pod副本数
                             deployment|statefulset
 kubectl expose -n <命名空间> <Pod控制器资源类型> <资源名称> --name <svc资源名称> --type <svc类型> --port <clusterIP的端口> --target-port <容器端口>
                              deployment
 kubectl create service <service类型> <service资源名称> --tcp=<clusterIP的端口:容器端口>
kubectl set image <Pod控制器资源类型> <资源名称> <容器名>=<容器镜像>
                   deployment|daemonset
 kubectl set selector <资源类型> <资源名称> '标签key=value'
                      service
 kubectl rollout history <Pod控制器资源类型> <资源名称>    
                         deployment|daemonset|statefulset
 kubectl rollout undo <Pod控制器资源类型> <资源名称>    [--to-revision=N]
                                                      指定版本号回滚
 kubectl rollout status <Pod控制器资源类型> <资源名称>            
service的4的基本类型:
 ClusterIP:默认的service资源的类型,可提供clusterIP:port供K8S集群内部访问service及其关联的Pod
 NodePort:会在每个node节点上都开启相同的端口,K8S集群外部或内部的用户都可以通过nodeIp:nodePort来访问service及其关联的Pod
 LoadBalancer:使用云负载设备和service作映射,外部用户通过访问云负载设备即可将请求转发到K8S的node节点,再通过nodeIP:nodePort来访问service及其关联的Pod
 ExternalName:相当于给一个外部地址(域名或IP)作别名,K8S集群内的Pod可以通过这个service访问相关的外部服务
 service 是通过 标签选择器 关联Pod的标签 来自动发现Pod的端点(podIP:containerPort)
service的端口
 port:service的clusterIP使用的端口,只能在K8S集群内部被访问到。K8S集群内部的客户端可以通过clusterIP:port来访问service
nodePort:NodePort类型的service使用的端口,会在每个node节点上都开启相同的端口,也就是nodeIP使用的端口(默认范围为30000~32767)。K8S集群外部或内部的客户端都可以通过nodeIp:nodePort来访问service
targetPort:Pod容器使用的端口。service会将发送给port或nodePort的请求转发给Pod容器,配置要与containerPort一致
Pod容器的端口
 containerPort:创建Pod时所指定的容器端口
查看service关联的Pod端口
 kubectl describe svc <资源名称>
 kubectl get endpoints [svc资源名称]
 kubectl describe endpoints <资源名称>
deployment控制器更新Pod的方式是 RollingUpdate(滚动更新)
 RollingUpdateStrategy(滚动更新策略):  25% max unavailable, 25% max surge
Replicas: 3 desired       控制器的期望副本数
 25% max surge             滚动更新时允许创建的最大副本数或比例,向上取整
 25% max unavailable       滚动更新时允许销毁的最大副本数或比例,向下取整
假设期望副本数是3,那么滚动更新时能够创建的副本数是 3 * 25% = 0.75  再向上取整为 1,能够销毁的副本数向下取整为 0
                    
 假设期望副本数是10,10 * 25% = 2.5  向上取整为 3     向上取整为 2
 整个滚动更新过程中Pod副本数始终处在 (10-2)<= Pod副本数 <= (10+3)之间
  
应用发布策略:
蓝绿发布:两套环境交替升级,旧版本保留一定时间便于回滚,优点用户无感知,部署和回滚速度较快,缺点浪费资源成本高
 滚动发布:按批次停止老版本实例,更新启动新版本实例。优点节约资源,缺点部署和回滚速度较慢
 灰度发布/金丝雀发布:根据比例将老版本升级,例如80%用户访问是老版本,20%用户访问是新版。优点保证整体系统稳定性,如果出问题影响范围很小,缺点自动化要求高
 kubectl set image deployment <资源名称> <容器名>=<容器镜像> && kubectl rollout pause deployment <资源名称>
 kubectl rollout resume deployment <资源名称>
声明式资源管理方式(可理解成使用yaml配置文件里定义的配置来实现资源对象的管理操作):
kubectl get -n <命名空间> <资源类型> <资源名称> -o yaml > XXX.yaml      #获取资源配置清单
 kubectl apply|create -f XXX.yaml           #创建|更新资源
 kubectl delete -f XXX.yaml                 #删除资源
 kubectl edit -n <命名空间> <资源类型> <资源名称>       #在线修改资源配置
对于不支持在线修改的字段只能通过离线修改的方式更新资源: kubectl delete -f XXX.yaml && kubectl apply -f XXX.yaml
kubectl explain <资源类型>.<一级字段>.<二级字段>.... #获取资源配置字段的解释
K8S资源配置清单文件字段的值类型:
字段: <integer>   数字         字段: 数值
 字段: <string>    字符串       字段: "字符串"     字段: '字符串'    字段: 字符串
 字段: <boolean>   布尔值       字段: true|false
字段: <Object>    对象:值可能是一层或多层子字段
                                字段:
                                  二级字段:
                                    三级字段
字段: <[]Object>   列表类型的对象             字段:
                                               - 二级字段:
                                                   三级字段
                                               - 二级字段: 
字段: <map[string]string>    映射:值可能是一个或多个键值对类型的值
                                   字段:
                                     key1: value1
                                     key2: value2
                                     key3: value3
如何获取K8S资源配置清单文件模板(yaml配置文件):
1.手写yaml配置文件,可以根据 kubectl explain 命令获取字段信息
 2.查看现有的资源配置获取:kubectl get -n <命名空间> <资源类型> <资源名称> -o yaml > XXX.yaml
 kubectl edit -n <命名空间> <资源类型> <资源名称> ,然后手动复制资源配置,粘贴到yaml文件中
 3.无中生有(模拟运行kubectl陈述式创建资源的命令获取):
 kubectl create|run|expose  选项  --dry-run=client -o yaml > XXX.yaml
 4.复制K8S官网文档的资源配置案例
