wyh-l6

导航

Kubernetes中资源对象的使用

###########调用集群api获取一些信息
#获取token
kubectl get secret -A
 
#通过curl请求api地址,查看api可查询的内容
curl --cacert /etc/kubeasz/clusters/k8s-cluster1/ssl/ca.pem -H "Authorization: Bearer #${token}" http://192.168.213.11:6443
#检查apiserver是否可以访问etcd
curl --cacert /etc/kubeasz/clusters/k8s-cluster1/ssl/ca.pem -H "Authorization: Bearer #${token}" http://192.168.213.11:6443/healthz/etcd
 
##Kubernetes的几个重要概念
资源对象:kubernetes基于声明式API,和资源对象进行交互
yaml文件:为了方便后期管理,api管理资源对象使用yaml文件来管理
yaml必须字段:
    apiVersion:创建该对象使用的kubernetes API的版本,不知道的可以通过 kubectl api-resources查看
    kind:想要创建的对象类型
    medadata:定义识别对象唯一性的数据(元数据),包括name,可选namespace(创建资源的时候可以-n执行)
    spec:定义资源兑现的详细规范信息(同一的label标签,容器名称,镜像等)
    status:pod创建完成后k8s自动生成状态信息
 
 
pod:
  1. pod是k8s中的最小单元
  2. 一个pod可以运行一个容器,也可以运行多个容器
  3. 运行多个容器的话,这些容器是一起被调度的
  4. pod的生命周期是短暂的,不会资源,使用完成后就会被销毁
  5. 一般我们是通过controller来创建和管理pod
 
 
#######################################控制器资源说明#########################################
job:一次性任务,例:数据初始化
 
cronjob:执行周期性质的任务,例数据备份,定时获取token等等
 
Replication Controller:副本控制器,selector只支持=和!=,第一代pod副本控制器
 
ReplicaSet:副本控制器,和Replication Controller的区别为selector还支持in和notin,写法有一点区别,第二代副本控制器
selector加matchExpressions是in或notin
 
deployment:比rs更高一级的副本控制器,具有rs的功能外还有很多高级功能,例如滚动升级、回滚等操作,第三代副本控制器
    滚动更新:
        kubectl rollout undo deploy/my-deploy    #回滚到最近的一个版本
        kubectl rollout history deploy/my-deploy    #查看保留的所有历史的可回滚版本
        kubect rollout history deploy/my-deploy --revision=3    #查看编号为3的历史版本信息
        kubectl rollout undo deploy/my-deploy --to-revision=3    #回滚到编号为3的版本
    patch:可以使用json的方式更新资源(需要了解json)
        kubectl patch deploy/my-deploy -p '{"spec": {"replicas":5}}'    #修改副本个数为5
        kubectl patch deploy/my-deploy -p '{"spec": {strategy: {"rollingUpdate": {maxSurge: 2,maxUnavailable:1}}}}'    #修改滚动更新策略,最多能超过副本数两个,最多有1个不可用
    滚动更新暂停(金丝雀发布):
        kubectl set image deploy/my-deploy nginx=nginx:1.20.1 && kubectl rollout pause deploy/my-deploy    #修改my-deploy中容器name为nginx的镜像,修改后会滚动更新,等增加一个pod节点后执行pause(暂停),这样当前的节点数要比控制器的期望的多,多出来的还是你想更新的版本的,完成金丝雀发布
        kubectl rollout resume deploy/my-deploy    #暂停开始操作
###################################################################################
 
service:由于pod重建后ip就会发生变化,因此pod和pod不能直接使用pod的ip进行访问,而service则解耦了服务和应用,service时间方式是通过标签动态匹配后端的endpoint
    四种类型:
        ClusterIP:只在集群中才能访问到
        LoadBalancer:在公有云上才能使用,会在service上申请一个负载均衡器
        NodePort:会在每一个node节点监听一个相同端口,用于客户端的访问,会把请求抓发至对应的service,service在转发到pod
        ExternalName:引用集群外部资源到集群内部使用
    端口类型:
        port:service访问端口
        targetport:pod开放的端口
        nodePort:开启nodeport类型后,集群外部访问service的端口
cluserIP类型的yaml:
nodePort类型的yaml文件:
 
 
    
 
 

posted on 2022-08-16 10:00  IT老六  阅读(63)  评论(0编辑  收藏  举报