0
点赞
收藏
分享

微信扫一扫

3.声明式API及指令式命令创建namespace、pod、service

应用编排运行在kubernetes上的条件

1、以容器化形式,得有可用的Image
2、编排、调度、运行应用的最小单元是pod
3、Controller模式(控制器模式)
4、声明式API

声明式API

声明式API:声明资源对象的终态,达成终态的依赖项是Controller

     声明多个资源终态:以应用为中心
        工作负载型Controller资源对象: Deployment 
            应用更新 
            扩容和缩容
            ……
        服务的固定访问入口,负载均衡功能:Service
            ClusterIP 
            NodePort

声明式API资源类型
~# kubectl api-resources(列出所有资源类型,不够用,可扩展资源类型)
         NAME         SHOUTNAMES  APIVERSION    NAMESPACED              KIND
资源类型的名字,都是复数形式  简写形式    版本    是否是名称空间级别类型   资源类型标示:单数每个首字母大写

~# kubectl api-versions(查看组,相近的资源类型,会被划分至同一个组中;不同的功能,会被分类到不同的组合)
 每个的组的版本号,独立演进
        alpha: 内测
        beta:公测   (v1beta1)公测版
        stable:稳定 (v1)稳定版

声明式API资源范式:五个一级字段
                apiVersion: GROUP/VERSION     (类型源数据/对应资源所属群组)
                Kind: Kind                    (类型源数据/类型类型,对应表的名称)
                metadata:                     (对象源数据)
                  name:
                  namespace:
                  lables:                    (标签)
                    key1: value1         
                spec: {}                      (对象源数据/定义资源对象的终态)
                  containers:     (容器将共享同一组pause的network、IPC、和UTS名称空间)
                  - name:   
                    image:  
                status: <Object>, 资源的实际状态,由系统组件自行负责维护

~# kubectl explain <Kind>  查看特定资源规范

指令式命令:
创建deployment,编排一个无状态应用

指令式命令
                create namespace, deployment, service
                get <TYPE> <NAME> ...
                get <TYPE1>/<NAME1> <TYPE2>/<NAME2> ...
                exec
                describe
                ...

创建名称空间

kubectl create namespace <NAME>
如  kubectl create namespace demo
namespace/demo created
后面不跟<NAME>, 为默认使用的名称空间 default
系统级的名称空间
kube-system
kube-node-leases
kube-public

查看或列出资源对象
kubectl get namespace

创建pod

创建一个pod放在指定的名称空间下
kubectl create deployment demoapp --image=ikubernetes/demoapp:v1.0 --replicas=2 -n demo

查看deployment自动创建出来的pods
kubectl get pods -n demo

查看pods详细信息
kubectl describe deployments demoapp -n demo

查看单个pod的详细信息
kubectl describe pod demoapp-64794886fd-rn9xl -n demo

查看pods的IP地址
kubectl get pods -o wide -n demo
         
查看pods的日志
kubectl logs demoapp-64794886fd-rn9xl -n demo
           
删除pods
kubectl delete deployment demoapp -n demo

持续监视
kubectl get pods -w

手动扩缩容
kubectl scale deployment/demoapp ----replicas=6 -n demo
kubectl scale deployment/demoapp ----replicas=4 -n demo

创建service

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

ClusterIP形式创建方法
kubectl create service clusterip NAME [--tcp=<port>:<targetPort>] [--dry-run=server|client|none]

NodePort形式创建方法
kubectl create service nodeport NAME [--tcp=port:targetPort] [--dry-run=server|client|none] [options]
                   
显示pod内部的接口和接口的ip地址状态信息
kubectl exec -it demoapp-64794886fd-wmn59 -n demo -- ifconfig
进入交互式接口
kubectl exec -it demoapp-64794886fd-wmn59 -n demo -- /bin/sh
交互式接口下查看监听端口
[root@demoapp-64794886fd-wmn59 /]# netstat -ntl
示例:
kubectl create service nodeport demoapp --tcp=80:80 -n demo
service/demoapp created
查看service
kubectl get service -n demo
查看service的IP地址和端口号
kubectl get svc -n demo
交互式访问: kubectl exec -it demoapp-64794886fd-wmn59 -n demo -- /bin/sh
curl 10.111.252.250:8080
集群内部可用名称访问 demoapp:8080
外部访问: curl 10.111.252.250:30483

创建一个专用的交互式测试客户端:

~# kubectl run client-$RANDOM --image=ikubernetes/admin-box:v1.2 --restart=Never -it --rm --command -- /bin/bash

举报

相关推荐

0 条评论