命令式
资源清单
声明式配置清单
查看名称空间
~]# kubectl get namespaces NAME STATUS AGE default Active 10d kube-public Active 10d kube-system Active 10d
列出默认名称空间所有pod和service对象,并输出额外信息
~]# kubectl get pods,services -o wide NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 10d <none>
列出指定名称空间拥有k8s-app标签名称的所有pod对象
~]# kubectl get pods -l k8s-app -n kube-system NAME READY STATUS RESTARTS AGE coredns-6c66ffc55b-ndrfc 1/1 Running 0 10d coredns-6c66ffc55b-t74vv 1/1 Running 0 10d kube-proxy-hs66q 1/1 Running 0 9d kube-proxy-kgl4v 1/1 Running 0 10d kube-proxy-lmgph 1/1 Running 0 9d kube-proxy-mf2qk 1/1 Running 0 10d
每个资源对象都包含用户期望的状态(spec)和现有状态信息,可由kubectl get -o {yaml|json} 或者 kubectl describe 命令打印指定资源对象的详细描述信息
查看指定名称空间中拥有标签component=kube-apiserver的pod对象的资源配置清单及当前的状态信息,并输出为yaml格式
~]# kubectl get pods -l component=kube-apiserver -o yaml -n kube-system ~]# kubectl describe pods -l component=kube-apiserver -n kube-system
~]# kubectl logs kube-apiserver-master.ilinux.io -n kube-system 实时监控容器日志信息(类似tail -f) ~]# kubectl logs -f kube-apiserver-master.ilinux.io -n kube-system
~]# kubectl exec kube-apiserver-master.ilinux.io -n kube-system -- ps 若pod存在多个容器,需要-c指定容器
删除默认名称空间的service资源对象
~]# kubectl delete service nginx-svc
删除拥有标签app=monitor的pod对象
~]# kubectl delete pods -l app=monitor -n kube-system
删除kube-public名称空间中的所有pod对象
~]# kubectl delete pods --all -n kube-public
下面使用示例镜像'ikubernetes/nginx-app:v1'来掩饰容器应用编排的基础操作,应用的部署、访问、查看、服务暴漏和扩缩容等
~]# kubectl run --image=nginx:alpine nginx-app --port=80
可以看到部署pod生成的deployment状态
~]# kubectl get deployment NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE nginx-app 1 1 1 1 17h 1) NAME:资源对象名称 2) DESIRED: 用户期望当前控制器管理的pod对象副本的精确数量 3) CURRENT: 当前控制器已有的pod对象副本数量 4) UP-TO-DATE: 更新到最新版本定义的pod对象副本数量,在控制器滚动更新下,他表示已经完成版本更新的pod对象的副本数量 5) AVAILABLE: 当前处于可用状态的pod对象副本数量 6) AGE: pod存在时长 提示:deployment资源对象通过ReplicaSet控制器实例完成对pod对象的控制,默认自动附加一个标签,如'run=nginx-app'
查看deployment控制器创建pod对象信息
~]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE nginx-app-787756bcb-2962q 1/1 Running 0 17h 10.244.2.4 node02.ilinux.io <none> 此时,可以在集群任一节点使用curl命令对创建的nginx-app pod对象的80端口进行访问 ~]# curl http://10.244.2.4:80/
例子:
~]# kubectl logs nginx-app-787756bcb-2962q ~]# kubectl exec nginx-app-787756bcb-2962q ps aux ~]# kubectl -it exec nginx-app-787756bcb-2962q /bin/sh
一个service对象可视作通过其标签选择器过滤出一组pod对象,并能够为此组pod对象监听的套接字提供端口代理及调度服务
创建service对象
kubectl expose 命令可用于创建service对象已将应用程序暴漏于网络中
~]# kubectl expose deployment/nginx-app --type="NodePort" --port=80 --name=nginx-app
查看创建的service对象
~]# kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 11d nginx-app NodePort 10.105.8.163 <none> 80:32121/TCP 6s PORT字段表明,集群各工作节点都会铺货发往本地目标端口32121的流量,并将其代理至当前service对象的80端口 集群外部可以直接访问任一节点的的此端口来访问service对象上的服务
使用kubectl run命令创建deployment对象时,'--replicase='选项能够制定该对象的pod副本数量
kubectl scale命令专用于变动控制器应用规模的命令,支持对deployment资源对象的扩容和缩容操作
~]# kubectl scale deployments/nginx-app --replicas=3 ~]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE nginx-app-787756bcb-2962q 1/1 Running 0 18h 10.244.2.4 node02.ilinux.io <none> nginx-app-787756bcb-66fp5 1/1 Running 0 78s 10.244.3.4 node03.ilinux.io <none> nginx-app-787756bcb-f67wb 1/1 Running 0 78s 10.244.1.5 node01.ilinux.io <none> ~]# kubectl get deployment NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE nginx-app 3 3 3 3 18h 之前创建的service根据标签选择器,自动扩展到3个pod对象 ~]# kubectl describe services nginx-app Name: nginx-app Namespace: default Labels: run=nginx-app Annotations: <none> Selector: run=nginx-app Type: NodePort IP: 10.105.8.163 Port: <unset> 80/TCP TargetPort: 80/TCP NodePort: <unset> 32121/TCP Endpoints: 10.244.1.5:80,10.244.2.4:80,10.244.3.4:80 Session Affinity: None External Traffic Policy: Cluster Events: <none>
~]# kubectl delete service myappd 删除默认名称空间的所有deployment对象 ~]# kubectl delete deployment --all