K8S基本命令操作

目录

基本操作

查看版本的信息

查看资源对象

集群的信息

添加补全功能

node节点查看日志

master节点

查看命令空间

查看命名空间的所有资源

创建命名空间

删除命名空间

启动pod(nginx-wl)

描述某个资源的详细信息

产看空间kube-public的pod节点信息

登录容器

删除容器

扩容和缩容

删除副本及控制器

项目的生命周期

[创建 kubectl create](#创建 kubectl create)

[发布 kubectl expose](#发布 kubectl expose)

[更新 kubectl set](#更新 kubectl set)

[回滚 kubectl rollout](#回滚 kubectl rollout)

[删除 kubectl delete](#删除 kubectl delete)

金丝雀

更新

查看节点

升级

查看


基本操作

查看版本的信息

复制代码
[root@master opt]# kubectl version
Client Version: v1.28.2
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.28.2

查看资源对象

复制代码
[root@master opt]# kubectl api-resources

集群的信息

复制代码
[root@master opt]# kubectl cluster-info

添加补全功能

复制代码
echo "source <(kubectl completion bash)" >> /etc/profile

# 之后再生效
source /etc/profile

node节点查看日志

复制代码
[root@master opt]# journalctl -u kubelet.service -f
-- Logs begin at 六 2025-09-13 16:16:57 CST. --
10月 10 15:25:07 master kubelet[33470]: E1010 15:25:07.626530   33470 kubelet.go:2477] "Housekeeping took longer than expected" err="housekeeping took too long" expected="1s" actual="1.605s"
10月 10 15:25:11 master kubelet[33470]: E1010 15:25:10.307088   33470 kubelet.go:2477] "Housekeeping took longer than expected" err="housekeeping took too long" expected="1s" actual="1.497s"
10月 10 15:25:13 master kubelet[33470]: E1010 15:25:13.660376   33470 kubelet.go:2477] "Housekeeping took longer than expected" err="housekeeping took too long" expected="1s" actual="1.841s"
10月 10 15:25:17 master kubelet[33470]: I1010 15:25:17.158414   33470 trace.go:236] Trace[323703093]: "iptables ChainExists" (10-Oct-2025 15:25:14.759) (total time: 2399ms):

master节点

复制代码
[root@master opt]# kubectl get componentstatuses

查看命令空间

复制代码
[root@master opt]# kubectl get namespaces

查看命名空间的所有资源

复制代码
[root@master opt]# kubectl get all
复制代码
[root@master opt]# kubectl get all -n default
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP        8h
service/nginx        NodePort    10.96.3.38   <none>        80:30769/TCP   32m

查看以kubernetes-dashboard命名的所有空间

复制代码
[root@master opt]# kubectl get all -n kubernetes-dashboard

创建命名空间

复制代码
[root@master opt]# kubectl create ns app
namespace/app created
[root@master opt]# kubectl get ns app
NAME   STATUS   AGE
app    Active   10s

删除命名空间

复制代码
[root@master opt]# kubectl delete namespace app
namespace "app" deleted
[root@master opt]# kubectl get ns app
Error from server (NotFound): namespaces "app" not found

启动pod(nginx-wl)

复制代码
[root@master opt]# kubectl create deployment nginx-wl --image=nginx  -n kube-public 

注意这里我使用了华为云的镜像

复制代码
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
    endpoint = ["https://0a40cefd360026b40f39c00627fa6f20.mirror.swr.myhuaweicloud.com","https://registry-1.docker.io"]

大概在219行,把原先的代码删除换成这个代码,要注意格式哦

描述某个资源的详细信息

复制代码
[root@master opt]# kubectl describe deployments.apps nginx-wl -n kube-public 
[root@master opt]# kubectl describe pod nginx-wl-67cc67cb89-dxtwn -n kube-public

产看空间kube-public的pod节点信息

复制代码
[root@master opt]# kubectl get pods -n kube-public 
NAME                        READY   STATUS    RESTARTS   AGE
nginx-wl-67cc67cb89-dxtwn   1/1     Running   0          95m

登录容器

kubectl exec可以跨主机登录容器,docker exec 只能在容器所在主机上登录

复制代码
[root@master opt]# kubectl exec -it nginx-wl-67cc67cb89-dxtwn -n kube-public bash

删除容器

复制代码
[root@master opt]# kubectl delete pod nginx-wl-67cc67cb89-dxtwn -n kube-public 

这时候会发现一个问题,nginx容器仍然在运行,只是换了一个名字

这是因为存在deployment/rc之类的副本控制器,删除pod也会重新拉起来

若pod无法删除,总是处于terminate状态,则要强行删除pod

复制代码
[root@master opt]# kubectl delete pod nginx-wl-67cc67cb89-7xjm2 -n kube-public --force --grace-period=0
Warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
pod "nginx-wl-67cc67cb89-7xjm2" force deleted

grace-period表示过渡存活期,默认30s,在删除pod之前允许POD慢慢终止其上的容器进程,从而优雅退出,0表示立即终止pod

扩容和缩容

复制代码
# 扩容
[root@master opt]# kubectl scale deployment nginx-wl -n kube-public --replicas=3
deployment.apps/nginx-wl scaled
复制代码
# 缩容
[root@master opt]# kubectl scale deployment nginx-wl --replicas=1 -n kube-public 
deployment.apps/nginx-wl scaled

删除副本及控制器

复制代码
[root@master opt]# kubectl delete deployments.apps nginx-wl -n kube-public 
deployment.apps "nginx-wl" deleted

项目的生命周期

创建-->发布-->更新-->回滚-->删除

创建 kubectl create

复制代码
kubectl create --help

启动 nginx

暴露端口为80,设置副本为3

发布 kubectl expose

为deployment的nginx创建service,并通过Service的80端口转发至容器的80端口上,Service的名称为nginx-service,类型为NodePort

复制代码
[root@master opt]# kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort
service/nginx-service exposed

service 的 type 类型:

●ClusterIP:提供一个集群内部的虚拟IP以供Pod访问(service默认类型)

●NodePort:在每个Node上打开一个端口以供外部访问,Kubernetes将会在每个Node上打开一个端口并且每个Node的端口都是一样的,通过 NodeIp:NodePort 的方式Kubernetes集群外部的程序可以访问Service。

每个端口只能是一种服务,端口范围只能是 30000-32767。

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

在service提交后,Kubernetes就会调用CloudProvider在公有云上为你创建一个负载均衡服务,并且把被代理的Pod的IP地址配置给负载均衡服务做后端。 SLB 公网地址 一般会使用公有云

●externalName:将service名称映射到一个DNS域名上,相当于DNS服务的CNAME记录,用于让Pod去访问集群外部的资源,它本身没有绑定任何的资源。 tgc.benet.com

查看

pod网络状态详细信息和 Service暴露的端口

复制代码
[root@master opt]# kubectl get pods,svc -o wide
复制代码
//查看关联后端的节点
kubectl get endpoints

//查看 service 的描述信息
kubectl describe svc nginx

更新 kubectl set

在两个node节点里面运行

复制代码
yum install ipvsadm -y
ipvsadm -Ln

查看当前nginx的版本

复制代码
[root@master opt]# curl -I http://192.168.10.150:30769
[root@master opt]# curl -I http://192.168.10.160:30769

版本升级

复制代码
[root@master opt]# kubectl set image deployment/nginx nginx=nginx:1.15
deployment.apps/nginx image updated

查看版本

复制代码
[root@master opt]# curl -I http://192.168.10.150:30769
[root@master opt]# curl -I http://192.168.10.160:30769

回滚 kubectl rollout

查看历史版本

复制代码
kubectl rollout history deployment/nginx 

执行回到上一个版本

复制代码
[root@master opt]# kubectl rollout undo deployment/nginx 
deployment.apps/nginx rolled back

//执行回滚到指定版本

kubectl rollout undo deployment/nginx --to-revision=1

//检查回滚状态

kubectl rollout status deployment/nginx

删除 kubectl delete

复制代码
# 删除nginx
[root@master opt]# kubectl delete deployment/nginx
deployment.apps "nginx" deleted
# 删除service
[root@master opt]# kubectl delete svc/nginx-service
service "nginx-service" deleted
# 检查节点
[root@master opt]# kubectl get pods,svc -o wide
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE    SELECTOR
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP        13h    <none>
service/nginx        NodePort    10.96.3.38   <none>        80:30769/TCP   6h1m   app=nginx

金丝雀

更新

更新deployment的版本,并配置暂停deployment

复制代码
[root@master opt]# kubectl set image deployment/nginx nginx=nginx:1.14 && kubectl rollout pause deployment/nginx
deployment.apps/nginx paused

监控更新的过程,可以看到已经新增了一个资源,但是并未按照预期的状态去删除一个旧的资源,就是因为使用了pause暂停命令

复制代码
[root@master opt]# kubectl get pods -w 
NAME                     READY   STATUS             RESTARTS   AGE
nginx-56496f7bdd-9txrk   0/1     ImagePullBackOff   0          8m4s
nginx-56496f7bdd-fb2xq   1/1     Running            0          8m4s
nginx-56496f7bdd-vqz5d   1/1     Running            0          8m4s
nginx-56496f7bdd-9txrk   0/1     ErrImagePull       0          8m12s
nginx-56496f7bdd-9txrk   0/1     ImagePullBackOff   0          8m25s

查看节点

升级

复制代码
[root@master opt]# kubectl set image deployment/nginx nginx=nginx:1.15
deployment.apps/nginx image updated

查看

相关推荐
我好饿13 小时前
部署k8s集群+containerd+dashboard
云原生·容器·kubernetes
hello_2503 小时前
动手模拟k8s网络-vxlan模式
网络·容器·kubernetes
阑梦清川3 小时前
linux网络基础
linux
海海思思3 小时前
解决Docker "exec format error":架构不匹配问题分析
docker·容器
小马爱打代码4 小时前
Kubernetes:控制器 - ReplicaSet
容器·kubernetes
月墨江山4 小时前
Ubuntu 20.04 使用 Issac Gym 进行宇树G1人形机器人进行强化学习训练(Linux仿真)
linux·ubuntu·机器人
缘的猿6 小时前
云计算划分标准与Kubernetes NetworkPolicy深度解析
容器·kubernetes·云计算
天朝八阿哥6 小时前
关于xfce4-pulseaudio-plugin中文翻译的bug
linux·debian
z202305086 小时前
linux之 remoteproc 内核实现源码分析
linux·运维·服务器