随笔Kubernetes

使用Kubernetes的方法:  

面向其声明式API进行编程:

    声明资源对象的终态
    如何达成实际状态,则由Controller来负责

提供了客户端工具:
    CLI: kubectl 
    Web UI:Dashboard

kubectl
指令式命令:管理的目标的对象的操作和配置,通过命令行选项进行指定 

        kubectl create deployment                              #有就删,没有就错
        kubectl create service nodeport
        kubectl get nodes
        kubectl delete node k8s-node01.magedu.com
指令式对象配置:对象配置通过配置文件进行定义   #有就删,没有就不显示  建议使用
        kubectl get -f nodes.yaml
        kubectl delete -f nodes.yaml
声明式对象配置:对象配置通过配置文件进行定义
        kubectl apply -f nodes.yaml  #没,创建,有不一样。修改,一样,不动   建议使用

 API资源规范

        API Server内置有限种的数据结构(资源类型),每种类型都可以被填充数据后实例化出一至多个对象

        ~# kubectl api-resources   列出所有表结构

 NAME       SHORTNAMES(缩写)  APIVERSION     NAMESPACED             KIND
(名字)        (缩写)                     (名称空间级别)   (表类型标识单词头大写)

bindings                            v1            true(是)          Binding
componentstatuses        cs         v1            false(集群级别)  ComponentStatus

Pod:类型

列:

nginx-pod
demoapp-pod
fpm-pod

对象的标识符:对象的Name,不能重复可以01  02  

为降低名称冲突的概率:使用名称作用域
 

名称空间:Namespace  #当前资源只要在名称空间里不重复就行了,这里名称空间和内核的名称空间没有关系的,他是K8s独有的名称空间

名称作用域存在两个级别:
Cluster                 #集群级别
Namespace         #一个Cluster里可以创建多个名称空间

资源类型也有级别的概念,类型所属的级别,代表着创建资源对象所属的级别;

每个的组的版本号,独立演进
                alpha: 内测
                beta:公测
                stable:稳定

            ~# kubectl api-versions
            admissionregistration.k8s.io/v1
            apiextensions.k8s.io/v1
            apiregistration.k8s.io/v1
            apps/v1
            authentication.k8s.io/v1
            authorization.k8s.io/v1
            autoscaling/v1
            autoscaling/v2
            autoscaling/v2beta2
            batch/v1
            certificates.k8s.io/v1
            coordination.k8s.io/v1
            discovery.k8s.io/v1
            events.k8s.io/v1
            flowcontrol.apiserver.k8s.io/v1beta1
            flowcontrol.apiserver.k8s.io/v1beta2
            networking.k8s.io/v1
            node.k8s.io/v1
            policy/v1
            rbac.authorization.k8s.io/v1
            scheduling.k8s.io/v1
            storage.k8s.io/v1
            storage.k8s.io/v1beta1
            v1
                v1 --> core/v1

资源范式:
            apiVersion: <String>                    负责标明该类型所隶属的API群组
            Kind: <String>                             用于指定类型标识
            metadata: <Object>                    帮助识别对象唯一性的数据,包括一个 name 名称 
            spec: <Object>,                        定义资源对象的终态

            status: <Object>,                        资源的实际状态,由系统组件自行负责维护

核心功能:以应用为中心的应用编排平台
    围绕编排运行应用的各种需求,被分别组织到多个资源类型中

    内建文档: 查看资源信息,快速获取内容

            kubectl explain Kind
               kubectl explain Kind.spec

 查看 安装相关命令

kubectl get pods       #查看
kubectl get pods mysql-9d74fbb9b-6wb5v -o yaml   #yaml格式查看你指定

kubectl create namespace www                                 #创建名称空间

kubectl get namespace                                               #查看所有名称空间

系统的内置名称空间:
                default:默认使用的名称空间
                kube-system:系统的名称空间
                kube-node-leases
                kube-public

kubectl get pods -n kube-system                         #查看所有系统的名称空间

查看或列出资源对象
kubectl get <Type> [<NAME1> <NAME2> ...] [-n <NAMESPACE>] [-o yaml|json|wide]

kubectl get <Type1>/<NAME1>  <Type2>/<NAME1> [-n <NAMESPACE>] [-o yaml|json|wide]

                --watch, -w:持续监视

[root@master01 ~]#kubectl create deployment demoapp --image=ikubernetes/demoapp:v1.0 --replicas=2 -n www                                  #创建
deployment.apps/demoapp created

[root@master01 ~]#kubectl get deployments -n www
NAME      READY   UP-TO-DATE   AVAILABLE   AGE
demoapp   0/2     2            0           57s
[root@master01 ~]#kubectl get pods -n demo
NAME                       READY   STATUS              RESTARTS   AGE
demoapp-55c5f88dcb-bsjsd   0/1     ContainerCreating   0          8s
demoapp-55c5f88dcb-wwc5f   0/1     ContainerCreating   0          8s


kubectl get pods  -n wide -n demo                      #查看详情
kubectl logs demoapp-55c5f88dcb-bsjsd -n demo          #查看日志

查看容器日志:
            kubectl logs <POD_NAME> [-c CONTAINER_NAME] [-n <NAMESPACE>]

kubectl scale deployments/demoapp --replicas=4 -n demo   #缩 30秒宽限 阔不需要
手动扩容或缩容:
            kubectl scale <TYPE>/<NAME> --replicas=<NUM> [-n <NAMESPACE>]

在Pod中的某容器内部运行命令:
kubectl exec (POD | TYPE/NAME) [-c CONTAINER] [flags] -- COMMAND [args...] [options]

kubectl exec -it POD_NAME [-c CONTAINER] -- COMMAND [args...]

Service  固定发访问端口  应用

 Service:
            类型:
                ClusterIP:仅支持集群内部的客户访问   默认
                NodePort:支持集群内部客户端访问;同时,支持集群外部的客户端通过任何一个的节点IP地址进行访问,但要使用特定端口  分配的范围:30000-32768

kubectl create service clusterip NAME [--tcp=<port>:<targetPort>] [--dry-run=server|client|none]

 kubectl create service nodeport NAME [--tcp=port:targetPort] [--dry-run=server|client|none] [options]    kubectl create service nodeport demoapp --tcp=80:80 -n demo
  

 curl 172.29.9.11:30483    #可以在外部进行访问 可以 负载均衡    内部名称访问就行

kubectl apply -f mysql-ephemeral/ -n demo    #部署拉下来的仓库文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值