3声明式API及指令式命令创建namespacepodservice
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3声明式API及指令式命令创建namespacepodservice相关的知识,希望对你有一定的参考价值。
应用编排运行在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
创建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
以上是关于3声明式API及指令式命令创建namespacepodservice的主要内容,如果未能解决你的问题,请参考以下文章