当前位置: 首页 > news >正文

K8S基本命令操作

基本操作

查看版本的信息

[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

查看

http://www.dtcms.com/a/464819.html

相关文章:

  • 【kubernetes/k8s源码分析】kube-controller-manager之node controller源码分析
  • SMOTE 算法详解:解决不平衡数据问题的有效工具
  • HGDB集群(安全版)repmgr手动切换主备库
  • 三维GIS数据转换指南:SHAPE文件到3DTiles的高效实现方案
  • K8S(三)—— 基于kubeadm 1.20版本部署Kubernetes集群与Harbor私有仓库实战
  • 宁波外贸网站制作公司手机网站建设哪家公司好
  • 【C语言实战(8)】C语言循环结构(do-while):解锁编程新境界
  • 面向Qt/C++开发工程师的Ai提示词(附Trae示例)
  • sqlite 使用: 01-源码编译与使用
  • Django视图进阶:快捷函数、装饰器与请求响应
  • 企业营销网站的建设网站开发响应式
  • 掌握DMA基于GD32F407VE的天空星的配置
  • 基于腾讯云的物联网导盲助手设计与实现(论文+源码)
  • Vue3打造高效前端埋点系统
  • 框架--Maven
  • 【Java集合】
  • 停止Conda开机自动运行方法
  • 湘潭市高新建设局施工报建网站wordpress 宕机
  • 复杂结构数据挖掘(二)关联规则挖掘 Association rule mining
  • Windows 上安装 PostgreSQL
  • 基于JETSON/x86+FPGA+AI的5G远程驾驶座舱时延验证方案
  • 支持向量机(SVM)完全解读
  • 单片机学习日记
  • 重庆网站制作多少钱app设计开发哪家好
  • AI大模型学习(17)python-flask AI大模型和图片处理工具的从一张图到多平台适配的简单方法
  • 如何通过 7 种解决方案将文件从PC无线传输到Android
  • Word 为每一页设置不同页边距(VBA 宏)
  • wordpiece、unigram、sentencepiece基本原理
  • css word-spacing属性
  • 使用 python-docx 库操作 word 文档(2):在word文档中插入各种内容