K8s陈述式资源管理

命令行:kubectl命令行工具

  • 优点:90%以上的场景都可以满足

对资源的增删改查比较方便,对改不是很友好。

  • 缺点:命令比较冗长,复杂,难记

声明式:

看到声明式都是k8s当中的yml文件来实现资源管理。

GUI:

图形化工具

kubectl命令的详解,查看,部署,查看pod的情况(详细信息,日志,发布和回滚)

相关命令字典:Kubernetes kubectl 命令表 _ Kubernetes(K8S)中文文档_Kubernetes中文社区

k8s中基本管理信息的查看

查看k8s的版本

查看k8s的版本
kubectl version

k8s中所有资源对象和资源对象的简写

kubectl api-resource

k8s的集群信息

kubectl cluster-info

查看master节点的状态

kubectl get cs

查看node节点的状态

kubectl get pod
查看默认命名空间内的pod信息

kubectl get ns
查看当前集群所有的命名空间

kubectl get pod -n kube-system
-n来声明查看指定命名空间的资源

kubectl get pod -o wide 
查看默认命名空间内pod的详细信息

kubectl get pod -n kube-system
-n来声明查看指定命名空间的资源

kubectl get pod -o wide 

查看默认命名空间内pod的详细信息

查看指定命名空间的pod

 kubectl get pod -n kube-system -o wide

kubectl get node
查询节点的信息和状态

kubectl get node -o wide
查看node节点的详细信息

如何查看pod的详细信息

查看已经部署好的pod的详细信息

kubectl get node
查看


详细查看
kubectl describle pod myapp-hj-567cb4489c-fq2fd

如果查看指定命名空间的内容,一定要加-n,不加则显示默认

如何查看pod内部的日志

kubectl logs -f myapp-hj-567cb4489c-fq2fd


kubectl logs -n kube-system etcd-master01
kubectl create ns zzr

kubectl delete ns zzr

kubectl delete pod myapp-hj-567cb4489c-fq2fd
先声明动作,再跟上对象,最后是对象的名称

pod的部署

deployment的部署pod:

陈述式部署:命令行

声明式:yml文件部署

滚动更新:不是一次性的把所有pod全部部署,而是一个一个来。pod的更新时使用,逐步引入新的pod,逐步减少旧的pod。

自我修复:如果有pod节点发生故障,deployment会自动启动新的pod来进行代替。

回滚:如果更新有问题,deployment会提供还原点,可以手动还原到未更新前的状态。

扩容和缩容:deployment可以随时调整pod的数量,以适应流量的变化。

上述的功能必须是基于deployment创建的服务才可以。绝大多数服务都是通过deployment来进行创建的

daemonset:不能通过命令行创建,只能在yml文件中定义这种创建方式。

后台运行创建,在每一个节点上都创建一个相同方式的,相同版本的容器运行的pod。

一般都是依赖环境和重要组件,一般也不会对这些资源进行操作。

 kubectl get pod -n zzr


kubectl create deployment nginx-hj --image=nginx --replicas=3 -n zzr

kubectl get pod -n zzr

-n:指定命名空间

如果是基于deployment方式创建的pod,或者是daemonset方式创建的pod,是由控制器创建的pod,使用delete删除pod是删不掉的,相当于重启,

不是基于控制器创建的pod,是直接删除

远程进入节点容器

 kubectl exec -it nginx-zzr-6bdd8bcbb5-c5tdv bash

docker的exec只能在本机内使用,不能跨主机,kubectl exec可以跨主机进入容器

kubectl create deployment nginx-zzr --image=nginx --replicas=3 -n zzr

 kubectl exec -it nginx-zzr-6bdd8bcbb5-8ph4k bash -n zzr

 root@nginx-zzr-6bdd8bcbb5-8ph4k:/# echo k8s-nginx > /usr/share/nginx/html/index.html

 root@nginx-zzr-6bdd8bcbb5-8ph4k:/# echo k8s-nginx > /usr/share/nginx/html/index.html

如果有容器一直卡在“销毁”状态:

kubectl delete pod 容器名 --force --grace-period=0

grace-period:表示过度存活期,默认是30秒。可以让pod优雅的结束容器内的进程,然后退出pod

=0:立刻停止pod,必须要有force才能实现

主要是用于结束卡在销毁状态的pod

对deployment创建的pod进行扩容和缩容

 kubectl scale deployment 容器名 --replicas=所需副本数


 kubectl scale deployment myapp-hj --replicas=2

如何把服务的service进行发布

service的类型:

kubectl get svc:查看当前命名空间的service

ClusterIP:

创建service的默认类型,提供一个集群内部的虚拟IP地址,这是service的默认类型。通过这个虚拟IP会直接访问pod的资源,无法对外提供访问。

NodePort:

会在每一个node节点上都开放一个相同的端口。外部可以通过node的本机ip+端口,访问pod资源。集群外部访问service资源的一种方式。四层代理方式。

nodeip:nodeport

随即指派,也可以指定30000-32767

基于deployment的创建方式

kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort

kubectl get svc
NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes      ClusterIP   10.96.0.1      <none>        443/TCP        24h
myapp-zzr       ClusterIP   10.96.38.125   <none>        30000/TCP      20h
nginx-service   NodePort    10.96.181.60   <none>        80:31989/TCP   2s


10.96.232.240  集群内部的IP地址,外部是不可以访问这个IP地址

80:对应的是内部的service端口

31989:和内部的service的80端口做映射

kubectl expose deployment nginx1 --port=8080 --target-port=80 --name=nginx1-service --type=NodePort

--port=8080:service和容器映射的端口,可以是任意
--target-port=80:容器内部的服务端口

如何实现负载均衡

kubectl edit svc nginx-service
修改nodeport端口。

LoadBalancer:

如果service的类型设定为LoadBalancer,映射地址(云平台提供LoadBalancer地址)

公有云服务供应商在云平台上设置的service的场景。外部来访问,实现负载均衡。LoadBalancer这个地址是要付费的。

创建好了service,指定类型为LoadBalancer,会提供一个地址来代理pod内部的IP地址。

ExternalName:

DNS映射,给service分配一个域名,通过域名来访问后端pod资源。ExternalName的service类型,不能提供负载均衡,必须要设置一个LoadBalancer才可以实现。

做映射对外提供访问是nodeport

ExternalNmae需要映射

LoadBalancer需要花钱

更新和回滚以及发布的方式:

项目的生命周期:

创建------》发布------》更新-------》回滚------》删除

如何回滚:

查看回滚点:

kubectl rollout history deployment nginx1
数字越大,就是最近的操作

如何给回滚点加表示

 kubectl set image deployment nginx1 nginx=nginx:1.15 --record

kubectl rollout undo deployment nginx1 --to-revision=1

如何查看

1.kubectl rollout status deployment nginx1

2.kubectl get pod -w

kubectl rollout history deployment nginx1

kubectl get all
查看所有集群的信息

  • 16
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
k8s资源管理有几种方。一种方是通过使用Namespace来进行资源的隔离和管理。k8s中的Namespace可以将集群内部的资源分配到不同的逻辑组中,以方便不同组的资源进行隔离使用和管理。通过授权机制,可以将不同的Namespace交给不同的租户进行管理,实现多租户的资源隔离。此外,结合资源配额机制,可以限定不同租户能够占用的资源,例如CPU使用量、内存使用量等,来管理租户可用资源。\[2\] 另一种方是通过操作资源来管理k8s集群。在k8s中,所有内容都可以被抽象为资源,通过操作这些资源来管理集群。例如,可以使用Deployment资源类型来管理应用的部署和更新,使用Service资源类型来提供应用的网络访问,使用ReplicaSet资源类型来控制应用的副本数量,使用DaemonSet资源类型来在集群中的每个节点上运行一个Pod,使用Job资源对象来管理一次性任务的执行,使用CronJob资源类型来定期执行任务等等。通过操作这些资源,可以实现对k8s集群中各种服务和应用的管理和控制。\[1\]\[3\] #### 引用[.reference_title] - *1* [k8s资源类型详解](https://blog.csdn.net/weixin_47019016/article/details/111415831)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [k8s资源管理命令与Namespace使用详解](https://blog.csdn.net/zhangcongyi420/article/details/128379834)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值