云原生(第三篇)-k8s资源管理的两种方式

这篇具有很好参考价值的文章主要介绍了云原生(第三篇)-k8s资源管理的两种方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 

陈述式资源管理方法:

1.kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口
2.kubectl 是官方的CLI命令行工具,用于与 apiserver 进行通信,将用户在命令行输入的命令,组织并转化为 apiserver 能识别的信息,进而实现管理 k8s 各种资源的一种有效途径
3.kubectl 的命令大全
kubectl --help
k8s中文文档:http://docs.kubernetes.org.cn/683.html
4.对资源的增、删、查操作比较方便,但对改的操作就不容易了

查看版本信息:kubectl version

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器


查看资源对象简写和详细信息:kubectl api-resources

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器


查看集群信息:kubectl cluster-info

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器


实时查看节点日志信息:journalctl -u kubelet -f

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器


补全命令:source <(kubectl completion bash)

查看节点信息:kubectl get nodes

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器


查看节点信息的ip:kubectl get nodes -o wide  (*指定输出格式:wide json yaml)

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

查看主节点状态:kubectl get cs

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器


查看命名空间:kubectl get ns

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

查看所有命名空间里有哪些pod:kubectl get pods -A

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器


指定查看命名空间里的pod:kubectl get pods -n 命名空间名

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器


查看指定命名空间里指定的pod:kubectl get pods  pod名 -n 命名空间名 (-w 实时监控)

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器


查看指定命名空间的pod的标签:kubectl get pods -n 命名空间名 --show-labels云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器


显示指定标签的pod:kubectl get pods -n 命名空间名 -l 标签名

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

查看指定命名空间的所有资源:kubectl get all -n 命名空间

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器 

查看所有命名空间的svc:kubectl get svc -A

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器


指定查看命名空间里的svc:kubectl get svc -n 命名空间名云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器


查看指定命名空间里指定的svc:kubectl get svc -n 命名空间名 svc名

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

 查看pod的描述信息:kubectl describe pod pod名称

查看指定命名空间的pod的描述信息:kubectl describe pod 指定pod名 -n 命名空间名 

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器


创建命名空间:kubectl create namespace 命名空间名

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

通过控制器创建pod(要指定命名空间),举例:在命名空间kube-public 创建副本控制器(deployment)来启动Pod(nginx-yht) ;kubectl create deployment nginx-yht --image=nginx -n kube-public (可以--replicas=3设置3个副本数 --port=80 指定pod容器的暴露端口)

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

 

查看控制器的情况:kubectl describe deployment(副本控制器) nginx-wl(副本控制器名) -n kube-public(命名空间名)

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

 查看pod 的详细描述:kubectl describe pod nginx-wl-d47f99cb6-hv6gz(pod名) -n kube-public云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

 跨节点登录容器:kubectl exec -it nginx-wl-d47f99cb6-hv6gz(pod名) bash -n kube-public (kubectl exec pod名 -c 容器名  进入其他容器)

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

 

删除时若无法删除,总是terminate状态,需要强删:
kubectl delete pod nginx-wl-d47f99cb6-hv6gz(pod名)-n kube-public --force --grace-period=0

grace-period表示过渡存活期,默认30s,在删除pod之前允许pod慢慢终止其上的容器进程,从而优雅退出,0表示立即终止pod。

删除指定pod:kubectl delete pod pod名
删除指定命名空间的pod:kubectl delete pod pod名 -n 命名空间名

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

扩容:kubectl scale deployment 控制器名 --replicas=2 -n kube-public

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器


缩容:kubectl scale deployment 控制器名 --replicas=1 -n kube-public

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

创建资源:kubectl create -f xxx.yaml
应用资源:kubectl apply -f xxx.yaml
删除资源:kubectl delete -f xxx.yaml

为deployment的nginx创建service,并通过Service的80端口转发至容器的80端口上,Service的名称为nginx-service,类型为NodePort
kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

 service的资源类型:

 ClusterIP:提供一个集群内部的虚拟IP以供Pod访问(service默认类型)

NodePort:在每个Node上打开一个端口以供外部访问,Kubernetes将会在每个Node上打开一个端口并且每个Node的端口都是一样的,通过 NodeIp:NodePort 的方式Kubernetes集群外部的程序可以访问Service。
每个端口只能是一种服务,端口范围只能是 30000-32767。

LoadBalancer:通过设置LoadBalancer映射到云服务商提供的LoadBalancer地址。这种用法仅用于在公有云服务提供商的云平台上设置Service的场景。通过外部的负载均衡器来访问,通常在云平台部署LoadBalancer还需要额外的费用。
在service提交后,Kubernetes就会调用CloudProvider在公有云上为你创建一个负载均衡服务,并且把被代理的Pod的IP地址配置给负载均衡服务做后端。

externalName:将service名称映射到一个DNS域名上,相当于DNS服务的CNAME记录,用于让Pod去访问集群外部的资源,它本身没有绑定任何的资源。

查看pod网络状态详细信息和 Service暴露的端口:

kubectl get pods,svc -n 命名空间 -o wide

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

 看关联后端的节点:云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

 在master01操作 查看访问日志:

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

 升级:

先查看当前的nginx的版本:curl http://clusterip:target-port

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

kubectl set image deployment deploy-nginx  nginx=nginx:1.20 -n myapp

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

 查看历史版本:kubectl rollout history deployment/nginx 云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

执行回滚到上一个版本:kubectl rollout undo deployment/nginx云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

执行回滚到指定版本:kubectl rollout undo deployment/nginx --to-revision=1

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

检查回滚状态:kubectl rollout status deployment/nginx

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

删除副本控制器
kubectl delete deployment/nginx

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

删除service
kubectl delete svc/nginx-service云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

 

金丝雀发布(Canary Release)
Deployment控制器支持自定义控制更新过程中的滚动节奏,如“暂停(pause)”或“继续(resume)”更新操作。比如等待第一批新的Pod资源创建完成后立即暂停更新过程,此时,仅存在一部分新版本的应用,主体部分还是旧的版本。然后,再筛选一小部分的用户请求路由到新版本的Pod应用,继续观察能否稳定地按期望的方式运行。确定没问题之后再继续完成余下的Pod资源滚动更新,否则立即回滚更新操作。这就是所谓的金丝雀发布。
(1)更新deployment的版本,并配置暂停deployment
kubectl set image deployment/nginx nginx=nginx:1.14 && kubectl rollout pause deployment/nginx

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

kubectl rollout status deployment/nginx  #观察更新状态

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

(2)监控更新的过程,可以看到已经新增了一个资源,但是并未按照预期的状态去删除一个旧的资源,就是因为使用了pause暂停命令 kubectl get pods -w 

 (3)确保更新的pod没问题了,继续更新
kubectl rollout resume deployment/nginx

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

 (4)查看最后的更新情况
kubectl get pods -w 

声明式资源管理方法:

1.适合于对资源的修改操作
2.声明式资源管理方法依赖于资源配置清单文件对资源进行管理
资源配置清单文件有两种格式:yaml(人性化,易读),json(易于api接口解析)
3.对资源的管理,是通过事先定义在统一资源配置清单内,再通过陈述式命令应用到k8s集群里
4.语法格式:kubectl create/apply/delete -f xxxx.yaml
 

查看资源配置清单:kubectl get deployment nginx -o yaml

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

解释资源配置清单:kubectl explain deployment.metadata

云原生(第三篇)-k8s资源管理的两种方式,k8s,云原生,kubernetes,容器

 

修改资源配置清单并应用:

离线修改:

修改yaml文件,并用 kubectl apply -f xxxx.yaml 文件使之生效
注意:当apply不生效时,先使用delete清除资源,再apply创建资源

在线修改:
直接使用 kubectl edit service nginx 在线编辑资源配置清单并保存退出即时生效(如port: 888)
PS:此修改方式不会对yaml文件内容修改

删除资源配置清单
陈述式删除:
kubectl delete service nginx

声明式删除:
kubectl delete -f nginx-svc.yaml文章来源地址https://www.toymoban.com/news/detail-538815.html

到了这里,关于云原生(第三篇)-k8s资源管理的两种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生】k8s中kubectl陈述式资源管理

    陈述式资源管理方法 --主要依赖命令行工具kubectl进行管理 优点 可以满足90%以上的使用场景 对资源的增、删、查操作比较容易 缺点 命令冗长,复杂,难以记忆 特定场景下,无法实现管理需求 对资源的修改麻烦,需要patch来使用json串更改。 声明式资源管理方法 主要依赖统一

    2024年02月12日
    浏览(57)
  • 【K8S 】K8S配置资源管理

    1、概念 用来保存密码。token,敏感的K8S资源 这类数据可以直接存放在镜像中,但是放在Secret中可以更方便的控制,减少暴露的风险 Secret:保存加密的信息 2、Secret类型: docker-registry:存储docker仓库的认证信息,以及docker的组件认证信息(私有) generic:是Secret的默认模式,

    2024年01月17日
    浏览(45)
  • K8S资源管理之计算资源管理

            以CPU为例,下图显示了未设置Limits与设置了Requests和Limits的CPU使用率的区别        尽管Requests和Limits只能被设置到容器上,但是设置了Pod级别的Requests和Limits能大大提高管理Pod的便利性和灵活性,因此在Kubernetes中提供了对Pod级别的Requests和Limits的配置。对于CP

    2024年04月15日
    浏览(52)
  • k8s---配置资源管理

    目录 内容预知 secret资源配置 secert的几种模式 pod如何来引用secret 陈述式创建secret 声明式+base64编码配置secret 将secret用vlumes的方式挂载到pod中 传参的方式将环境变量导入pod 如何通过secret加密方式获取仓库密码 configmap的资源配置 陈述式创建configmap资源配置 声明式配置configma

    2024年01月21日
    浏览(55)
  • k8s配置资源管理

    Secret Configmap Secret :保存密码,token,敏感的k8s资源 这类数据可以存放在镜像当中,但是防止secret当中可以更方便控制,减少暴露的风险 保存加密的信息 Docker-registry: 存储docker仓库认证信息,以及docker组件认证成功(私有) Generic: 是secret的默认模式,opaque base64加密编码的

    2024年01月21日
    浏览(47)
  • k8s 资源管理方式

    k8s中资源管理方式可以划分为下面的几种:命令式对象管理、命令式对象配置、声明式对象配置。 命令式对象管理 命令式对象管理:直接使用命令的方式来操作k8s资源, 这种方式操作简单,但是无法审计和追踪。 命令式对象配置 通过命令和配置文件来操作k8s资源,这种方式

    2024年02月07日
    浏览(42)
  • K8s-资源管理(二)

    2. 资源管理 2.1 资源管理介绍 在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes。 kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓的部署服务,其实就是在kubernetes集群中运行一个个的容器,并将指定的程序跑在容器中

    2024年02月15日
    浏览(41)
  • k8s- 配置资源管理

    配置资源管理 //Secret Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源,这类数据虽然也可以存放在 Pod 或者镜像中,但是放在 Secret 中是为了更方便的控制如何使用数据,并减少暴露的风险。 Secret 有四种类型:  ●kubernetes.io/service-account-token:由 Kubernetes 自动创建,

    2024年02月16日
    浏览(44)
  • k8s常用资源管理

    目录 Pod(容器组):Pod是Kubernetes中最小的部署单元,可以包含一个或多个容器。Pod提供了一种逻辑上的封装,使得容器可以一起共享网络和存储资源 1、创建一个pod 2、pod管理 pod操作 目录 创建Pod会很慢 Pod(容器组):Pod是Kubernetes中最小的部署单元,可以包含一个或多个容

    2024年02月13日
    浏览(37)
  • K8S资源管理方式

    1.基础命令操作 2.创建pod 3.查看资源状态 4.查看pod中的容器日志 5.进入pod中的容器 6.删除pod资源 7.pod扩容 8.项目生命周期管理(创建–发布–更新–回滚–删除) 8.1创建service service类型 service端口 8.2发布 8.3更新 8.4回滚 8.5删除 如何获取资源配置清单文件模板(yaml配置文件)

    2024年02月13日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包