【Kubernetes系列二】kubectl命令常用操作
2022/4/15 23:18:00
本文主要是介绍【Kubernetes系列二】kubectl命令常用操作,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
kubectl命令常用操作
1.创建资源对象
命令式
资源清单
声明式配置清单
2.查看资源对象
查看名称空间
~]# 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
3.查看资源对象的详细信息
每个资源对象都包含用户期望的状态(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
4.查看容器的日志信息
~]# kubectl logs kube-apiserver-master.ilinux.io -n kube-system 实时监控容器日志信息(类似tail -f) ~]# kubectl logs -f kube-apiserver-master.ilinux.io -n kube-system
5.在容器中执行命令
~]# kubectl exec kube-apiserver-master.ilinux.io -n kube-system -- ps 若pod存在多个容器,需要-c指定容器
6.删除资源对象
删除默认名称空间的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'来掩饰容器应用编排的基础操作,应用的部署、访问、查看、服务暴漏和扩缩容等
1.部署应用(pod)
~]# 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/
2.探查pod及应用详情
- kubectl describe:显示资源的详情,包括运行状态,事件等
- kubectl logs:查看pod对象中容器输出在控制台的日志信息,在pod中有多个容器时,使用-c指定容器名称
- kubectl exec:在pod对象某容器内运行指定程序
例子:
~]# kubectl logs nginx-app-787756bcb-2962q ~]# kubectl exec nginx-app-787756bcb-2962q ps aux ~]# kubectl -it exec nginx-app-787756bcb-2962q /bin/sh
3.部署service对象
一个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对象上的服务
4.扩容和缩容
使用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>
5.修改及删除对象
~]# kubectl delete service myappd 删除默认名称空间的所有deployment对象 ~]# kubectl delete deployment --all
这篇关于【Kubernetes系列二】kubectl命令常用操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23云原生周刊:利用 eBPF 增强 K8s
- 2024-12-20/kubernetes 1.32版本更新解读:新特性和变化一目了然
- 2024-12-19拒绝 Helm? 如何在 K8s 上部署 KRaft 模式 Kafka 集群?
- 2024-12-16云原生周刊:Kubernetes v1.32 正式发布
- 2024-12-13Kubernetes上运行Minecraft:打造开发者平台的例子
- 2024-12-12深入 Kubernetes 的健康奥秘:探针(Probe)究竟有多强?
- 2024-12-10运维实战:K8s 上的 Doris 高可用集群最佳实践
- 2024-12-022024年最好用的十大Kubernetes工具
- 2024-12-02OPA守门人:Kubernetes集群策略编写指南
- 2024-11-26云原生周刊:K8s 严重漏洞