ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【Kubernetes系列二】kubectl命令常用操作

2022-04-15 20:33:18  阅读:160  来源: 互联网

标签:kubectl 系列 Kubernetes 对象 app nginx pod kube


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及应用详情

  1. kubectl describe:显示资源的详情,包括运行状态,事件等
  2. kubectl logs:查看pod对象中容器输出在控制台的日志信息,在pod中有多个容器时,使用-c指定容器名称
  3. 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

标签:kubectl,系列,Kubernetes,对象,app,nginx,pod,kube
来源: https://www.cnblogs.com/robin788/p/16150802.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有