更多精彩资讯请猛戳这里:kubernetes系列技术文档
kubectl命令
kubectl是kubernetes集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。kubectl命令的语法如下:
kubectl [command] [type] [name] [flags]comand:指定要对资源执行的操作,例如create、get、delete
type:指定资源类型,比如deployment、pod、service
name:指定资源的名称,名称大小写敏感
flags:指定额外的可选参数
资源类型
资源分类
资源名称
缩写
资源作用
集群级别资源
nodes
no
集群组成部分
namespaces
ns
隔离Pod
pod资源
pods
po
装载容器
pod资源控制器
replicationcontrollers
rc
控制pod资源
replicasets
rs
控制pod资源
deployments
deploy
控制pod资源
daemonsets
ds
控制pod资源
jobs
控制pod资源
cronjobs
cj
控制pod资源
horizontalpodautoscalers
hpa
控制pod资源
statefulsets
sts
控制pod资源
服务发现资源
services
svc
统一pod对外接口
ingress
ing
统一pod对外接口
存储资源
volumeattachments
存储
persistentvolumes
pv
存储
persistentvolumeclaims
pvc
存储
配置资源
configmaps
cm
配置
secrets
配置
命令
命令分类
命令
翻译
命令作用
基本命令
create
创建
创建一个资源
edit
编辑
编辑一个资源
get
获取
获取一个资源
patch
更新
更新一个资源
delete
删除
删除一个资源
explain
解释
展示资源文档
运行和调试
run
运行
在集群中运行一个指定的镜像
expose
暴露
暴露资源为Service
describe
描述
显示资源内部信息
logs
日志
输出容器在 pod 中的日志
attach
缠绕
进入运行中的容器
exec
执行
执行容器中的一个命令
cp
复制
在Pod内外复制文件
rollout
首次展示
管理资源的发布
scale
规模
扩(缩)容Pod的数量
autoscale
自动调整
自动调整Pod的数量
高级命令
apply
rc
通过文件对资源进行配置
label
标签
更新资源上的标签
其他命令
cluster-info
集群信息
显示集群信息
version
版本
显示当前Server和Client的版本
资源类型–Namespce
Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。
更多精彩资讯请猛戳这里:kubernetes系列技术文档
增
# 创建namespace [root@master ~]# kubectl create ns dev namespace/dev created删
# 删除namespace [root@master ~]# kubectl delete ns dev namespace “dev” deleted查
# 1 查看所有的ns 命令:kubectl get ns [root@master ~]# kubectl get ns NAME STATUS AGE default Active 45h kube-node-lease Active 45h kube-public Active 45h kube-system Active 45h # 2 查看指定的ns 命令:kubectl get ns ns名称 [root@master ~]# kubectl get ns default NAME STATUS AGE default Active 45h # 3 指定输出格式 命令:kubectl get ns ns名称 -o 格式参数 # kubernetes支持的格式有很多,比较常见的是wide、json、yaml [root@master ~]# kubectl get ns default -o yaml apiVersion: v1 kind: Namespace metadata: creationTimestamp: “2020-04-05T04:44:16Z” name: default resourceVersion: “151” selfLink: /api/v1/namespaces/default uid: 7405f73a-e486-43d4-9db6-145f1409f090 spec: finalizers: – kubernetes status: phase: Active # 4 查看ns详情 命令:kubectl describe ns ns名称 [root@master ~]# kubectl describe ns default Name: default Labels: <none> Annotations: <none> Status: Active # Active 命名空间正在使用中 Terminating 正在删除命名空间 # ResourceQuota 针对namespace做的资源限制 # LimitRange针对namespace中的每个组件做的资源限制 No resource quota. No LimitRange resource.资源类型–Pod
Pod是kubernetes集群进行管理的最小单元,程序要运行必须部署在容器中,而容器必须存在于Pod中。可以理解为容器的封装,一个Pod中可以存在一个或者多个容器。
容器的生命周期
创建一个pod-nginx.yaml,内容如下:
apiVersion: v1 kind: Pod metadata: name: nginx namespace: dev spec: containers: – image: nginx:1.17.1 name: pod ports: – name: nginx-port containerPort: 80 protocol: TCP然后就可以执行对应的创建和删除命令了:
创建:kubectl create -f pod-nginx.yaml 删除:kubectl delete -f pod-nginx.yaml配置清单详解
apiVersion: v1 #必选,版本号,例如v1 kind: Pod #必选,资源类型,例如 Pod metadata: #必选,元数据 name: string #必选,Pod名称 namespace: string #Pod所属的命名空间,默认为”default” labels: #自定义标签列表 – name: string spec: #必选,Pod中容器的详细定义 containers: #必选,Pod中容器列表 – name: string #必选,容器名称 image: string #必选,容器的镜像名称 imagePullPolicy: [ Always|Never|IfNotPresent ] #获取镜像的策略 command: [string] #容器的启动命令列表,如不指定,使用打包时使用的启动命令 args: [string] #容器的启动命令参数列表 workingDir: string #容器的工作目录 volumeMounts: #挂载到容器内部的存储卷配置 – name: string #引用pod定义的共享存储卷的名称,需用volumes[]部分定义的的卷名 mountPath: string #存储卷在容器内mount的绝对路径,应少于512字符 readOnly: boolean #是否为只读模式 ports: #需要暴露的端口库号列表 – name: string #端口的名称 containerPort: int #容器需要监听的端口号 hostPort: int #容器所在主机需要监听的端口号,默认与Container相同 protocol: string #端口协议,支持TCP和UDP,默认TCP env: #容器运行前需设置的环境变量列表 – name: string #环境变量名称 value: string #环境变量的值 resources: #资源限制和请求的设置 limits: #资源限制的设置 cpu: string #Cpu的限制,单位为core数,将用于docker run –cpu-shares参数 memory: string #内存限制,单位可以为Mib/Gib,将用于docker run –memory参数 requests: #资源请求的设置 cpu: string #Cpu请求,容器启动的初始可用数量 memory: string #内存请求,容器启动的初始可用数量 lifecycle: #生命周期钩子 postStart: #容器启动后立即执行此钩子,如果执行失败,会根据重启策略进行重启 preStop: #容器终止前执行此钩子,无论结果如何,容器都会终止 livenessProbe: #对Pod内各容器健康检查的设置,当探测无响应几次后将自动重启该容器 exec: #对Pod容器内检查方式设置为exec方式 command: [string] #exec方式需要制定的命令或脚本 httpGet: #对Pod内个容器健康检查方法设置为HttpGet,需要制定Path、port path: string port: number host: string scheme: string HttpHeaders: – name: string value: string tcpSocket: #对Pod内个容器健康检查方式设置为tcpSocket方式 port: number initialDelaySeconds: 0 #容器启动完成后首次探测的时间,单位为秒 timeoutSeconds: 0 #对容器健康检查探测等待响应的超时时间,单位秒,默认1秒 periodSeconds: 0 #对容器监控检查的定期探测时间设置,单位秒,默认10秒一次 successThreshold: 0 failureThreshold: 0 securityContext: privileged: false restartPolicy: [Always | Never | OnFailure] #Pod的重启策略 nodeName: <string> #设置NodeName表示将该Pod调度到指定到名称的node节点上 nodeSelector: obeject #设置NodeSelector表示将该Pod调度到包含这个label的node上 imagePullSecrets: #Pull镜像时使用的secret名称,以key:secretkey格式指定 – name: string hostNetwork: false #是否使用主机网络模式,默认为false,如果设置为true,表示使用宿主机网络 volumes: #在该pod上定义共享存储卷列表 – name: string #共享存储卷名称 (volumes类型有很多种) emptyDir: {} #类型为emtyDir的存储卷,与Pod同生命周期的一个临时目录。为空值 hostPath: string #类型为hostPath的存储卷,表示挂载Pod所在宿主机的目录 path: string #Pod所在宿主机的目录,将被用于同期中mount的目录 secret: #类型为secret的存储卷,挂载集群与定义的secret对象到容器内部 scretname: string items: – key: string path: string configMap: #类型为configMap的存储卷,挂载预定义的configMap对象到容器内部 name: string items: – key: string path: stringlabel
label是kubernetes系统中的一个重要概念,它的作用就是在资源上添加标识,用来对它们进行区分和选择。
命令方式
# 为pod资源打标签 [root@master ~]# kubectl label pod nginx-pod version=1.0 -n dev pod/nginx-pod labeled # 为pod资源更新标签 [root@master ~]# kubectl label pod nginx-pod version=2.0 -n dev –overwrite pod/nginx-pod labeled # 查看标签 [root@master ~]# kubectl get pod nginx-pod -n dev –show-labels NAME READY STATUS RESTARTS AGE LABELS nginx-pod 1/1 Running 0 10m version=2.0 # 筛选标签 [root@master ~]# kubectl get pod -n dev -l version=2.0 –show-labels NAME READY STATUS RESTARTS AGE LABELS nginx-pod 1/1 Running 0 17m version=2.0 [root@master ~]# kubectl get pod -n dev -l version!=2.0 –show-labels No resources found in dev namespace. #删除标签 [root@master ~]# kubectl label pod nginx-pod version- -n dev pod/nginx-pod labeled配置方式
apiVersion: v1 kind: Pod metadata: name: nginx namespace: dev labels: version: “3.0” env: “test” spec: containers: – image: nginx:1.17.1 name: pod ports: – name: nginx-port containerPort: 80 protocol: TCP kubectl apply -f pod-nginx.yaml更多精彩资讯请猛戳这里:kubernetes系列技术文档
更多精彩资讯请猛戳这里:kubernetes系列技术文档
更多精彩资讯请猛戳这里:kubernetes系列技术文档
暂无评论内容