kubectl命令详解

目录

一、kubectl命令详解

1、查看某个资源的详细信息:kubectl describe pod pod_name -n nameapace

2、查看指定命名空间中pod的基本信息:kubectl get pods -n namespace

3、跨主机登录容器:kubectl exec -it pod_name /bin/bash -n namespace

4、删除pod

4.1、直接删除pod。但是deployment,副本控制器还在,他就会自己再创建一个。

①、直接删除POD 

②、查看,发现与原先pod_name不一样,

 4.2、删除pod副本控制器deployment:

4.3、如果删除过程中出现幺蛾子,Pod无法删除,总是处于terminating状态,则执行强行删除--force --grace-period=0

5、命令行扩容和缩容

5.1、副本集的扩容

①查看原有副本集:1个 

②扩容副本集为4

5.2、副本集的缩容 

6、删除service

7、查看pod网络状态详情信息和service暴露的端口

8、查看关联后的节点

9、查看service的描述信息

二、pod的生命周期

1、创建一个Pod,启动nginx实例,暴露容器80端口,设置副本集为3(创建pod)

namespace为默认

2、 发布:kubectl expose命令 ​编辑

3、 查看端口

​三、 service的type类型

一、kubectl命令详解
1、查看某个资源的详细信息:kubectl describe pod pod_name -n nameapace(不加-n namespace 默认为查看default命名空间资源)
[root@master ~]# kubectl describe pods -n kube-public         

                                                            ### 查看指定命名空间中的pod的详细信息

                            ### 在处理故障时,常使用此命令查看pod 的events信息来定位问题                                          

Name:         nginx-w1-7464d66457-psk6h
Namespace:    kube-public
Priority:     0
Node:         node01/192.168.159.11
Start Time:   Wed, 02 Nov 2022 01:40:47 +0800
Labels:       app=nginx-w1
              pod-template-hash=7464d66457
Annotations:  <none>
Status:       Running
IP:           10.150.1.3
IPs:
  IP:           10.150.1.3
Controlled By:  ReplicaSet/nginx-w1-7464d66457
Containers:
  nginx:
    Container ID:   docker://4011df060a9ad777793f061675fc1a784f4effe56f5585d91d5ba3670660c620
    Image:          nginx
    Image ID:       docker-pullable://nginx@sha256:943c25b4b66b332184d5ba6bb18234273551593016c0e0ae906bab111548239f
    Port:           <none>
    Host Port:      <none>
    State:          Running
      Started:      Wed, 02 Nov 2022 01:41:06 +0800
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-llzgh (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  kube-api-access-llzgh:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:                      <none>
 
 
Name:         nginx-x1-77484d895f-ddhqt
Namespace:    kube-public
Priority:     0
Node:         node02/192.168.159.13
Start Time:   Thu, 03 Nov 2022 16:16:11 +0800
Labels:       app=nginx-x1
              pod-template-hash=77484d895f
Annotations:  <none>
Status:       Running
IP:           10.150.2.3
IPs:
  IP:           10.150.2.3
Controlled By:  ReplicaSet/nginx-x1-77484d895f
Containers:
  nginx:
    Container ID:   docker://ecc07803682f2d7a51037024354dae0d190841443121ca0a8514ab224179cbf5
    Image:          nginx:latest
    Image ID:       docker-pullable://nginx@sha256:943c25b4b66b332184d5ba6bb18234273551593016c0e0ae906bab111548239f
    Port:           <none>
    Host Port:      <none>
    State:          Running
      Started:      Thu, 03 Nov 2022 16:16:36 +0800
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-47hxr (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  kube-api-access-47hxr:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:                      <none>

2、查看指定命名空间中pod的基本信息:kubectl get pods -n namespace
[root@master ~]# kubectl get pods -n kube-public [-o wide]    ###  [-o wide] 显示详细信息

NAME                        READY   STATUS    RESTARTS   AGE
nginx-w1-7464d66457-psk6h   1/1     Running   0          43h
nginx-x1-77484d895f-ddhqt   1/1     Running   0          5h12m
3、跨主机登录容器:kubectl exec -it pod_name /bin/bash -n namespace
root@master ~]# kubectl exec -it nginx-x1-77484d895f-ddhqt /bin/bash -n kube-public

例如:

root@master ~]# kubectl exec -it nginx-x1-77484d895f-ddhqt ifconfig  ### 不进入容器直接使用命令

[root@master ~]# kubectl exec -it nginx-x1-77484d895f-ddhqt /bin/bash -n kube-public
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
root@nginx-x1-77484d895f-ddhqt:/# 
4、删除pod
4.1、直接删除pod。但是deployment,副本控制器还在,他就会自己再创建一个。
[root@master ~]# kubectl delete pod nginx -n kube-public
pod "nginx-w1-7464d66457-psk6h" deleted

①、直接删除POD 


②、查看,发现与原先pod_name不一样,


 4.2、删除pod副本控制器deployment:
[root@master ~]# kubectl delete deployment nginx-w1 -n kube-public


4.3、如果删除过程中出现幺蛾子,Pod无法删除,总是处于terminating状态,则执行强行删除--force --grace-period=0
强行删除pod

5、命令行扩容和缩容
5.1、副本集的扩容
①查看原有副本集:1个 


②扩容副本集为4


5.2、副本集的缩容 
基于上面结果进行实验,设置--replicas=2,指定副本集数量后,他会根据现有的副本集数量和期望值相比较,从而决定时扩容还是缩容

6、删除service
[root@master ~]# kubectl delete svc nginx-server -n default

[root@master ~]# kubectl get svc -n default
NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes      ClusterIP   10.125.0.1      <none>        443/TCP        2d6h
nginx-server    NodePort    10.125.126.34   <none>        80:30537/TCP   45m
nginx1-server   NodePort    10.125.103.25   <none>        80:31070/TCP   2m41s
[root@master ~]# kubectl delete svc nginx-server -n default
service "nginx-server" deleted
7、查看pod网络状态详情信息和service暴露的端口
[root@master ~]# kubectl get svc,pods -n default


8、查看关联后的节点
[root@master ~]# kubectl get endpoints

[root@master ~]# kubectl get endpoints
NAME             ENDPOINTS                                    AGE
kubernetes       192.168.159.10:6443                          2d6h
nginx1-service   10.150.1.10:80,10.150.1.9:80,10.150.2.9:80   32m
9、查看service的描述信息
[root@master ~]# kubectl describe svc nginx

 
[root@master ~]# kubectl describe svc nginx
Name:                     nginx1-service
Namespace:                default
Labels:                   app=nginx
Annotations:              <none>
Selector:                 app=nginx
Type:                     NodePort
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       10.125.32.0
IPs:                      10.125.32.0
Port:                     <unset>  80/TCP
TargetPort:               80/TCP
NodePort:                 <unset>  31625/TCP
Endpoints:                10.150.1.10:80,10.150.1.9:80,10.150.2.9:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

10、核心组件查看日志
通过kubeadm方式部署的K8S

kubectl logs -f pod_name -n namespace  或者 journalctl -u kubelet -f

### kubectl logs -f   持续输出打印

### kubectl logs   只打印当前时刻

通过二进制部署的K8S

journalctl -u kubelet -f

二、pod的生命周期
pod生命周期是指:pod在从创建到删除过程中,所包含、经历的状态

pod的类型分为2中:

①、自主式:没有控制器管理的就是自助式的。删除时直接删除就行

②、申明式:有控制器管理的Pod。(我们一般使用的类型)

1、创建一个Pod,启动nginx实例,暴露容器80端口,设置副本集为3(创建pod)
namespace为默认
[root@master ~]# kubectl create deployment nginx-ceshi --image=nginx:1.14 --port 80 --replicas=3 
deployment.apps/nginx-ceshi created
 

2、 发布:kubectl expose命令 
3、 查看端口


三、 service的type类型
①、clusterIP:提供一个集群内部的虚拟IP以供Pod访问(service默认类型)   

②、NodePort:在每个Node上打开一个端口以供外部访问,Kubernetes将会在每个Node上打开一个端口并且每个Node的端口都是一样的,通过 NodeIp:NodePort 的方式Kubernetes集群外部的程序可以访问service。每个端口只能是一种服务,端口范围只能是30000-32767

③、LoadBalancer:通过设置LoadBalancer映射到云服务商提供的LoadBalancer地址。这种用法仅用于在公有云服务提供商的云平台上设置service的场景。通过外部的负载均衡器来访问,通常在云平台部署LoadBalancer还需要额外的费用。

④、externalName:将service名称映射到一个DNS域名上,相当于DNS服务的CNAME记录,用于让Pod去访问集群外部的资源,它本身没有绑定任何的资源。
————————————————
版权声明:本文为CSDN博主「忙碌滴比特流」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_62948770/article/details/127678600

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
kubectl是Kubernetes的命令行工具,用于与Kubernetes集群进行交互和管理。下面是kubectl的一些常用命令及其详解: 1. kubectl get:用于获取资源的信息。例如,使用kubectl get pods可以获取当前集群中所有的Pod信息。 2. kubectl create:用于创建资源。例如,使用kubectl create deployment可以创建一个新的Deployment。 3. kubectl apply:用于应用配置文件或更新资源。例如,使用kubectl apply -f deployment.yaml可以应用一个Deployment的配置文件。 4. kubectl describe:用于查看资源的详细信息。例如,使用kubectl describe pod my-pod可以查看名为my-pod的Pod的详细信息。 5. kubectl delete:用于删除资源。例如,使用kubectl delete pod my-pod可以删除名为my-pod的Pod。 6. kubectl exec:用于在容器内执行命令。例如,使用kubectl exec my-pod -- ls可以在名为my-pod的Pod中执行ls命令。 7. kubectl logs:用于查看容器的日志。例如,使用kubectl logs my-pod可以查看名为my-pod的Pod中容器的日志。 8. kubectl port-forward:用于将本地端口与Pod或Service的端口进行转发。例如,使用kubectl port-forward my-pod 8080:80可以将本地的8080端口与名为my-pod的Pod中的80端口进行转发。 9. kubectl scale:用于调整资源的副本数。例如,使用kubectl scale deployment/my-deployment --replicas=3可以将名为my-deployment的Deployment的副本数调整为3。 10. kubectl rollout:用于管理资源的滚动更新。例如,使用kubectl rollout restart deployment/my-deployment可以重新启动名为my-deployment的Deployment。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值