西安网站开发公司有哪家好,xampp wordpress 建站教程,百度个人中心登录,做兼职一般去哪个网站好k8s的陈述式资源管理#xff1a;
命令行#xff1a;kubectl命令行工具
优点#xff1a;90%以上的场景都可以满足
对资源的增#xff0c;删#xff0c;查比较方便#xff0c;对改不是很友好
缺点#xff1a;
命令比较冗长#xff0c;复杂#xff0c;难记
声明式
命令行kubectl命令行工具
优点90%以上的场景都可以满足
对资源的增删查比较方便对改不是很友好
缺点
命令比较冗长复杂难记
声明式
k8s当中的yaml文件来实现资源管理------声明式 GUI图形化工具的管理。 1、kubectl命令的详解 查看 部署 查看pod的情况详细的信息日志 发布和回滚
Kubernetes kubectl 命令表 _ Kubernetes(K8S)中文文档_Kubernetes中文社区 kubectl version
查看k8s的版本
kubectl api-resources
查看所有api的资源对象的名称简写
kubectl cluster-info
查看k8s的集群信息
kubectl get ComponentStatuscs
查看master节点的状态 基本信息查看
kubectl get pod
查看默认命名空间内的pod的信息
kubectl get ns
查看当前集群所有的命名空间
kubectl get pod -n kube-system
查看指定命名空间内的pod需要加-n 命名空间的名称
kubectl get pod -o wide
查看默认命名空间内的pod的详细信息
kubectl get pod -o wide -n kube-system
查看指定命名空间内pod的详细信息
kubectl get node
查询节点的信息和状态
kubectl get node -o wide
查看node节点的详细信息 查看已经部署好的pod节点的详细信息
kubectl get pod可以查到的describe都可以看到
kubectl describe pod nginx-6799fc88d8-f9c8g容器id
查看指定pod的详细信息
例查看etcd-master01的详细kube-system
kubectl describe pod -n kube-system9:31 如何查看pod内部的日志
kubectl logs nginx-6799fc88d8-f9c89
-f 动态查看日志
kubectl logs -n kube-system
查看指定命名空间内的pod资源 创建一个命名空间
kubectl create namespacensguoqi
删除命名空间
kubectl delete ns guoqi
删除指定pod的命名空间
kubectl delete pod nginx-6799fc88d8-f9c89
要先声明动作指定对象指定操作对象的名称
create delete get ns pod service guoqi
不是默认命名空间还要加 -n 指定命名空间 deployment部署pod
陈述式部署命令行
声明式yaml文件部署
滚动更新不是一次性的把所有pod全部部署而是一个个来。pod的更新时使用逐步的引入新的pod逐步的减少旧的pod
自我修复如果有pod节点发生故障deployment会自动启动新的pod来进行代替
回滚如果更新有问题deployment会提供还原点可以手动还原到未更新前的状态。
扩容和缩容deployment可以随时调整pod的数量以适应流量的变化。
上述的功能必须是基于deployment创建的服务才可以。绝大数的pod都是使用deployment来创建的 kubectl get deployments.apps
kubectl get deployments.apps -n kube-system
kubectl get daemonsets.apps -n name9:50
daemonset不能通过命令行创建只能在yaml文件当中定义这种创建方式
daemonsets后台运行创建在每个节点上都会创建一个相同方式的相同版本的容器运行的pod。
一般都是依赖环境和重要组件一般也不会对这些资源进行操作。
kubectl create deployment nginx-dn 在当前的命名空间里不能重复
kubectl create deployment nginx --imagenginx
kubectl create deployment nginx-dn --imagenginx
kubectl create ns guoqi
kubectl create deployment nginx-dn --imagenginx --replicas3 -n guoqi
kubectl get pod -n guoqi
注如果是基于deployment方式创建的pod或者是dameonset方式创建的pod也就是由控制器创建的pod使用delete删除pod是删不掉的相当于重启pod
要先删除控制器控制器deployment一旦删除了基于这个控制器创建的pod都会被一并销毁
如无特殊需要一般不删除 不是基于控制器创建的会被直接删除掉 删除之前要先查看哪些是基于deployment控制器创建的否则删除就真的没了 远程进入节点容器
kubectl get pod -o wide
kubectl exec -it nginx-dn-6d6cd9c7c5-j7ffr bash
echo 123 /usr/share/nginx/html/index.html
curl 10.244.1.7 注docker的exec只能在本机内部使用不能跨主机kubectl exec可以跨主机进入容器
kubectl create deployment nginx --imagenginx -n guoqi
那么如今进去命名空间进行创建操作呢
范围命名空间的资源都要加-n
10:41 kubec delete pod ngi-dn- --force --grace-peroid0
grace-period表示过度存活期默认是30秒。可以让pod优雅的结束容器内的进程
-o表示 kubectl delete pod nginx-dn -
kubectl delete pod nginx-dn --grace-period0
如果pod一直卡在Terminating状态
加--force主要是用于强制结束卡在销毁状态的pod。10:49 如何对基于控制器deployment创建的pod进行扩缩容
扩容
kubectl scale deployment nginx-dn --replicas3
缩容
kubectl scale deployment nginx-dn --replicas1
创建pod时并没有指定副本数后续也可以对他的副本数进行修改。 如何把服务的service进行发布
kubectl get pods
kubectl create deployment nginx --imagenginx:1.10 --replicas3
现在我们基于nginx1.10创建了
service是由类型的
如何查看service类型
kubectl get svc
查看不同命名空间的svc情况加-n指定
kubectl get svc kube-system11:00 service 的类型
ClusterIP创建service的默认类型提供一个集群内的的虚拟ip地址这是service的默认类型。通过这个虚拟ip可以直接访问pod的资源无法对外提供访问。
NodePort会在每个node节点上都开放一个相同的端口。外部可以通过node的本机ip端口访问service资源。这是集群外部访问service资源的一种方式。四层代理的方式ip端口七层代理ingress。
nodeipnodeport
随机指派也可以指定 端口范围只能在30000-32767 基于deployment创建的pod可以使用的方式
kubectl expose deployment nginx --port80 --target-port80 --namenginx-service --typeNodePort
--port80 service集群的端口
--target-port80 port内部容器的端口
kubectl get svc 查看一下创建的service 类型 Nodeport
10.96.232.240 集群内部的ip地址外部是不可以访问这个ip地址的。
80对应的是内部的service的端口
32426和内部的service的80端口做映射。
nginx80-------service:80--------service和本机的32436端口做映射 kubectl create deployment nginx1 --imagenginx --replicas3
kubectl expose deployment nginx1 --port8080 --target-port1314 --namenginx-service-typeNodePort
kubectl expose deployment nginx1 --port8080 --target-port80 --namenginx-service-typeNodePort
pod内部的容器的端口是固定的--port是service和容器映射的端口可以是任意11:20
容器内部的服务的端口--target-port80是固定的不能随便指定但是--port可以随便指定 kubectl edit svc nginx-service
kubectl ecit svc nginx1-service LoadBalancer如果service的类型设定为LoadBalancer映射地址云平台提供LoadBalancer
的地址这种用法仅用于公有云服务供应商在云平台上设置的service的场景实现负载均衡。
LoadBalancer这个地址是要付费的。
创建好了service指定类型为LoadBalancer会给你提供一个地址来代理pod内部的ip地址。
11:45 ExternalNameDNS映射给service分配一个域名通过域名来访问后端pod资源。ExternalName的service类型不能提供负载均衡。必须要设置一个LoadBalancer的地址才可以实现。
kubec expose deployment nginx1 --port8081 --target-port80
12:00 service的四种类型
ExterName做映射NodePort对外提供访问
cluster默认类型只用于内部访问
LoadBalancer要花钱的 更新和回滚以及发布的方式
项目的生命周期
创建---------发布---------更新---------回滚---------删除
以nginx为例
curl - 192.168.233.91:30000
更新
kubectl set image deployment nginx1 nginxnginx:1.10 回滚
查看回滚点
kubectl rollout history deployment nginx1
数字的大小决定了距离上一次操作的远近数字越大就是你最近的一次操作。
kubectl set image deployment nginx1 nginxnginx:1.15 回滚的命令
指定还原点
kubectl rollout undo deployment nginx1 --to-revision1
kubectl kubectl get all
查看集群内部是所有信息pod使用的镜像servicedeployment
-o wide -n kube-system
查看指定命名空间内的信息 注set是更新的时候加