kubectl的核⼼功能在于通过API Server操作Kubernetes的各种资源对象,它⽀持三种操作⽅式(直接命令式、命令式配置清单及声明式配置清单),其中直接命令式(Imperative commands)的使⽤最为简便,是了解Kubernetes集群管理的⼀种有效途径。
本文主要介绍试用 kubectl 编排容器应⽤, 基础操作:应⽤部署、访问、查看、服务暴露和扩缩容等。
kubectl用于运行Kubernetes集群命令的管理工具。
语法运行如下命令:
kubectl [command] [TYPE] [NAME] [flags]
其中command,TYPE,NAME,和flags都是:* command:指定要在一个或多个资源执行的操作,例如操作create,get,describe,delete。* TYPE:指定资源类型Resource types。Resource types会区分大小写,也可以指定单数,复数或缩写的形式。
当在多个资源上执行操作时,可以通过type和name 指定每个资源,或者指定一个或多个file:通过type和name指定的资源:如果它们都是相同的type,就可以对资源进行分组TYPE1 name1 name2 name<#>
更多命令参考:
通过合⽤的Controller类的资源(如Deployment或ReplicationController)创建并管控Pod对象以运⾏特定的应⽤程序,如Nginx或tomcat等。⽆状态( stateless)应⽤的部署和控制通常使⽤Deployment控制器进⾏,⽽有状态应⽤则需要使⽤StatefulSet控制器
# kubectl create deployment demoapp --image="ikubernetes/demoapp:v1.0"
deployment.apps/demoapp created
它在default名称空间中创建了⼀个名为myapp的Deployment控制器对象,并由它基于指定的镜 像⽂件创建了⼀个Pod对象。
# kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
demoapp 0/1 1 0 39s
# kubectl get pods -l app=demoapp -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
demoapp-5748b7ccfc-xmxlw 0/1 ContainerCreating 0 101s <none> tk-note1 <none> <none>
Service 为弹性变动且存在生命周期的Pod对象提供了一个固定的访问接口,用于服务发现和服务访问
# kubectl create service nodeport demoapp --tcp=80
service/demoapp created
# kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
demoapp NodePort 10.111.225.105 <none> 80:31772/TCP 83s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 167m
POD_NAME=demoapp-5748b7ccfc-xmxlw
kubectl describe pods $POD_NAME
输出:
Name: demoapp-5748b7ccfc-xmxlw Namespace: default Priority: 0 Node: tk-note1/192.168.1.114 Start Time: Fri, 21 Jan 2022 07:36:49 +0000 Labels: app=demoapp pod-template-hash=5748b7ccfc Annotations: Status: Pending IP: IPs: Controlled By: ReplicaSet/demoapp-5748b7ccfc
创建一个自主式Pod对象并直接接入其交互式接口
kubectl run client-pod --image="ikubernetes/admin-toolbox:v1.0" --rm -it -- command -- /bin/sh
在client-pod 中测试Service的对象的名称解析功能
nslookup -query=A demoapp.default.svc.cluster.local
在client-pod 中通过curl对此前创建的Service对象名称发起访问请求
curl http://demoapp.default
kubectl run demoapp --image="ikubernetes/demoapp:v1.0"
https://kubernetes.io/zh/docs/tasks/debug-application-cluster/debug-running-pod/
大山要一天天移,技术一天天积累
Sign in to post a comment
Comment ( 0 )