文章目录
- kubectl详解
- 一、陈述式管理
- 1、陈述式资源管理方法
- 2、k8s相关信息查看
- 2.1 查看版本信息
- 2.1.1 查看资源对象简写
- 2.1.2 查看集群信息
- 2.1.3 配置kubectl自动补全
- 2.1.4 查看日志
- 2.2 基本信息查看
- 2.2.1 查看集群状态
- 2.2.2 查看命名空间
- 2.3 命名空间操作
- 2.3.1 查看default命名空间的所有资源
- 2.3.2 创建命名空间luck
- 2.3.3 删除命名空间luck
- 2.4 deployment/pod操作
- 2.4.1 在命名空间kube-public创建副本控制器(deployment)来启动Pod(nginx-xx)
- 2.4.2 显示某个资源的详细信息
- 2.4.3 查看命名空间kube-public中pod信息
- 2.4.4 登录容器
- 2.4.5 删除(重启)pod资源
- 2.4.6 若无法删除,总是处于terminate状态,则要强行删除pod
- 2.4.7 扩缩容
- 2.4.7.1 扩容
- 2.4.7.2 缩容
- 2.4.8 删除副本控制器
- 2.5 增加/删除label
- 2.5.1 增加label
- 2.5.2 删除label
- 3、K8S模拟项目
- 3.1 项目的生命周期
- 3.2 创建kubectl run命令
- 3.3 发布kubectl expose命令
- 3.3.1 Service的作用
- 3.3.2 Service的类型
- 3.3.3 查看Pod网络状态详细信息和Service暴露的端口
- 3.3.4 查看关联后端的节点
- 3.3.5 查看service的描述信息
- 3.3.6 查看负载均衡端口
- 3.3.7 访问查看
- 3.3.8 自定义访问页面,查看访问结果
- 3.3.9 查看访问日志
- 3.4 更新kubectl set
- 3.4.1 获取修改模板
- 3.4.2 查看版本更新策略
- 3.4.3 查看当前nginx版本并更新
- 3.4.4 监听pod状态
- 3.4.5 查看pod的ip变化
- 3.4.6 重新查看nginx版本信息
- 3.5 回滚kubectl rollout
- 3.5.1 查看历史版本
- 3.5.2 执行回滚到上一个版本
- 3.5.3 执行回滚到指定版本
- 3.5.4 检查回滚状态
- 3.6 删除kubectl delete
- 3.6.1 删除副本控制器
- 3.6.2 删除service
- 4、金丝雀发布/灰度发布(Canary Release)
- 4.1 金丝雀发布简介
- 4.2 更新deployment的版本,并配置暂停deployment
- 4.2.1 创建pods
- 4.2.2 发布服务
- 4.2.3 查看nginx版本
- 4.2.4 更新nginx版本并配置暂停
- 4.2.5 观察更新状态
- 4.2.6 监控更新的过程
- 4.2.7 查看nginx版本
- 4.2.8 resume继续更新
- 4.2.9 查看最后的更新情况
- 二、声明式管理
- 1、声明式管理方法
- 2、查看资源配置清单
- 3、解释资源配置清单
- 4、修改资源配置清单并应用
- 4.1 离线修改
- 4.2 在线修改
- 5、删除资源配置清单
- 5.1 陈述式删除
- 5.2 声明式删除
kubectl详解
一、陈述式管理
1、陈述式资源管理方法
-
通过命令额方式语句来实现对资源的管理,即通过一条命令来实现
-
kubernetes集群管理集群资源的唯一入口是通过相应的方法调用apiserver的接口
-
kubectl是官方的CLI命令行工具,用于与apiserver进行通信,将用户在命令行输入的命令,组织并转化为apiserver能识别的信息,进而实现管理k8s各种资源的一种有效途径
-
kubectl的命令大全
- kubectl --help
- k8s官方中文文档:http://docs.kubernetes.org.cn/683.html
-
对资源的增、删、查操作比较容易,但对改的操作就不容易了
2、k8s相关信息查看
2.1 查看版本信息
kubectl version
#查看版本信息
kubectl get nodes
#查看集群节点信息
2.1.1 查看资源对象简写
kubectl api-resources
#查看资源对象简写
2.1.2 查看集群信息
kubectl cluster-info
#查看集群信息
2.1.3 配置kubectl自动补全
source <(kubectl completion bash)
#配置kubectl自动补全(只在当前生效,可以放在~/.bashrc文件中)
[root@master ~]# source <(kubectl completion bash)
2.1.4 查看日志
journalctl -u kubelet -f
#查看日志
2.2 基本信息查看
kubectl get <resource> [-o wide|json|yaml] [-n namespace]
--------------------------------------------------------------------------------------------------------
获取资源的相关信息,
-n指定命名空间
-o指定输出格式
resource可以是具体资源名称,如"pod nhinx-xxx";也可以是资源类型,如“pod,node,svc,deploy”多种资源使用逗号间隔;或者all(仅展示几种核心资源,并不完整)
--all-namespaces或-A:表示显示所有命名空间
--show-labels:显示所有标签
-l app:仅显示标签为app的资源
-l app=nginx:仅显示包含app标签,且值为nginx的资源
--------------------------------------------------------------------------------------------------------
2.2.1 查看集群状态
kubectl get componentstatuses
kubectl get cs
#查看集群状态
2.2.2 查看命名空间
kubectl get namespace
kubectl get ns
#查看命名空间
2.3 命名空间操作
2.3.1 查看default命名空间的所有资源
kubectl get all [-n default]
#由于deafult为缺省空间,当不指定命名空间时默认查看default命名空间
kubectl get all
#查看空间的所有资源
2.3.2 创建命名空间luck
kubectl create ns luck
#创建命名空间luck
kubectl get ns
#显示所有命名空间
2.3.3 删除命名空间luck
kubectl delete ns luck
#删除命名空间luck(谨慎使用,会清空luck命名空间下的所有资源)
kubectl get ns
#显示所有命名空间信息
2.4 deployment/pod操作
2.4.1 在命名空间kube-public创建副本控制器(deployment)来启动Pod(nginx-xx)
kubectl create deployment nginx-xx --image=nginx -n kube-public
#在 kube-public 命名空间中创建一个名为 nginx-xx 的 Deployment,该 Deployment 将运行 nginx 镜像
--------------------------------------------------------------------------------------------------------
deployment:要创建的资源类型是 Deployment。Deployment 是 Kubernetes 中用于管理无状态应用(如 web 服务器)的资源。
nginx-xx:为新的 Deployment 指定的名称。
--image:指定要在 Deployment 中运行的容器镜像。
-n 或 --namespace:指定要在哪个 Kubernetes 命名空间中创建 Deployment。
kube-public:这是 Kubernetes 中的一个预定义命名空间,通常用于存储可以由集群中所有用户访问的公共对象。
--------------------------------------------------------------------------------------------------------
kubectl get deploy -n kube-public
#显示Deployment 资源的列表
2.4.2 显示某个资源的详细信息
kubectl describe <资源类型> <资源名称> [-n 命名空间]
#显示某个资源的详细信息
--------------------------------------------------------------------------------------------------------
<资源类型>
#描述的资源的类型,比如 pod、service、deployment、statefulset 等。
<资源名称>
#你想要描述的资源的名称。
[-n 命名空间]
#可选参数,指定资源所在的命名空间。不指定则为当前默认命名空间,通常是default。
--------------------------------------------------------------------------------------------------------
kubectl describe deployment nginx-xx -n kube-public
#显示nginx-xx的deployment资源的详细信息(显示副本信息)
kubectl describe pod nginx-xx -n kube-public
#显示nginx-xx的pod资源的详细信息(可以详细显示某个pod调度失败的原因)
2.4.3 查看命名空间kube-public中pod信息
kubectl get pods -n kube-public
#显示命名空间kube-public中pod信息
2.4.4 登录容器
#kubectl exec可以跨主机登录容器,docker exec只能在容器所在主机登录
kubectl exec -it nginx-xx-55f6c96849-vjsnm bash -n kube-public
#登录容器
2.4.5 删除(重启)pod资源
#由于存在deployment/rc之类的副本控制器,删除pod也会重新拉起来kubectl delete pod nginx-test-65c98cd596-nq9cq -n kube-public
kubectl delete pod nginx-xx-55f6c96849-vjsnm -n kube-public
#删除pod资源
kubectl get pods -n kube-public
#显示命名空间kube-public中pod信息(使用delpoyment启动的pod实例,直接去删除pod是无法删除的)
这是因为delpoyment控制器,是一种pod控制器,它建立在ReplicaSet之上的控制器,用于管理无状态应用,同时管理和控制Pod与ReplicaSet,确保pod实例,一直保持在replicaset设置的预期值上,想要删除pod实例,只能通过删除控制器来删除它管理的pod实例
2.4.6 若无法删除,总是处于terminate状态,则要强行删除pod
#kubectl delete pod -n --force --grace-period=0
#grace-period表示过渡存活期,默认30s,在删除pod之前允许pod慢慢终止其上的容器进程,从而优雅的退出,0表示立即终止pod
#在删除命名空间之前,请确保该命名空间中没有正在运行的重要应用程序,以免影响集群的稳定性和可用性。
#有些命名空间可能是由Kubernetes系统自动生成的,不允许被删除。在删除之前,请确认命名空间是否允许被删除。
#在执行删除操作之前,请确保已经备份了必要的数据和配置
2.4.7 扩缩容
kubectl scale <资源类型> <资源名称> --replicas=num [-n ns]
2.4.7.1 扩容
kubectl scale deployment nginx-xx --replicas=3 -n kube-public
#创建3个副本
kubectl get pods -n kube-public
#显示pod资源信息
2.4.7.2 缩容
kubectl scale deployment nginx-xx --replicas=1 -n kube-public
#缩容,只留一个副本
kubectl get pods -n kube-public
#显示pod资源信息
2.4.8 删除副本控制器
kubectl delete deployment/nginx-xx -n kube-public
#删除副本控制器
kubectl get deployment -n kube-public
#显示deployment资源信息
2.5 增加/删除label
kubectl get <资源类型> [-n 命名空间] --show-labels
#查看指定的某个资源的标签
2.5.1 增加label
kubectl get deploy --show-labels
#获取集群中所有 Deployment 资源的列表,并显示它们的标签(labels)。
kubectl label deploy nginx-deployment version=nginx1.15
#添加标签
kubectl get deploy --show-labels
#显示deploy资源列表,并显示标签
2.5.2 删除label
kubectl get deploy --show-labels
#显示deploy资源列表,并显示标签
kubectl label deploy nginx-deployment version-
#删除标签
kubectl get deploy --show-labels
#显示deploy资源列表,并显示标签
3、K8S模拟项目
3.1 项目的生命周期
- 创建–>发布–>更新–>回滚–>删除
3.2 创建kubectl run命令
- 创建并运行一个或多个容器镜像
- 创建一个deployment或job来管理容器
kubectl run --help查看使用帮助
kubectl run nginx --image=nginx --port=80 --replicas=3
#启动nginx实例,暴露容器端口80,设置副本数3
kubectl get pods
#显示pods信息
kubectl get all
#显示空间所有资源
3.3 发布kubectl expose命令
- 将资源暴露为新的Service
kubectl expose --help查看使用帮助
kubectl expose deployment nginx-deployment --port=80 --target-port=80 --name=nginx-service --type=NodePort
#为Deployment的nginx创建Service,并通过Service的80端口转发至容器的80端口上,Service的名称为nginx-service,类型为NodePort
--------------------------------------------------------------------------------------------------------
--port=80
#指定了Service的端口,即集群内部其他Pods可以通过这个端口访问Service
--target-port=80
#指定了Service将流量转发到的目标端口,即Pods上实际运行的服务的端口。
#--target-port和--port可以是相同的,但也可以不同,具体取决于部署配置。
--name=nginx-service
#指定了新创建的Service的名称
--type=NodePort
#指定了Service 的类型。NodePort类型意味着Service会在集群的每个节点上打开一个特定的端口(称为 NodePort,端口范围为30000-32767之间的一个随机数),这样外部流量就可以通过该端口访问Service。这是将服务暴露给集群外部的一种方式。
--------------------------------------------------------------------------------------------------------
3.3.1 Service的作用
- Kubernetes之所以需要Service,一方面是因为Pod的IP不是固定的(Pod可能会重建),另一方面是因为一组Pod实例之间总会有负载均衡的需求。
- Service通过Label Selector实现的对一组的Pod的访问。
- 对于容器应用而言,Kubernetes提供了基于VIP(虚拟IP)的网桥的方式访问Service,再由Service重定向到相应的Pod。
3.3.2 Service的类型
- ClusterIP:提供一个集群内部的虚拟IP以供Pod访问(Service默认类型)
- NodePort:在每个Node上打开一个端口以供外部访问,Kubernetes将会在每个Node上打开一个端口并且每个Node的端口都是一样的,通过NodeIP:NodePort的方式
- LoadBalancer:通过外部的负载均衡器来访问,通常在云平台部署LoadBalancer还需要额外的费用。
3.3.3 查看Pod网络状态详细信息和Service暴露的端口
kubectl get pods,svc -o wide
#查看Pod网络状态详细信息和Service暴露的端口
3.3.4 查看关联后端的节点
kubectl get endpoints
#查看失联后端的节点
3.3.5 查看service的描述信息
kubectl describe svc nginx
#查看service的描述信息
curl 192.168.10.11:32056
curl 192.168.10.12:32056
curl 192.168.10.13:32056
#使用任意节点ip访问
3.3.6 查看负载均衡端口
- 在node01节点上操作
yum install -y ipvsadm.x86_64
#安装服务
ipvsadm -Ln
#显示当前的 IPVS 表(查看已配置的虚拟服务和后端服务器)
- 在node02节点上操作
yum install -y ipvsadm.x86_64
#安装服务
ipvsadm -Ln
#显示当前的 IPVS 表(查看已配置的虚拟服务和后端服务器)
3.3.7 访问查看
curl 10.96.18.173
curl 192.168.10.12:32056
curl 192.168.10.13:32056
#访问查看
3.3.8 自定义访问页面,查看访问结果
kubectl exec -it nginx-deployment-6975c5dffc-h228n bash
kubectl exec -it nginx-deployment-6975c5dffc-mdn4g bash
kubectl exec -it nginx-deployment-6975c5dffc-mhc6m bash
#登录容器,自定义访问页面
curl 10.96.18.173
#验证访问
3.3.9 查看访问日志
kubectl logs nginx-deployment-6975c5dffc-mhc6m
#查看访问日志
3.4 更新kubectl set
- 更改现有应用资源一些信息。
kubectl set --help
#查看使用帮助
3.4.1 获取修改模板
kubectl set image --help
#查看修改模板
3.4.2 查看版本更新策略
kubectl describe deployments.apps nginx
#查看版本更新策略
--------------------------------------------------------------------------------------------------------
RollingUpdateStrategy
#Deployment资源的一个字段,它用于定义滚动更新的策略。
#滚动更新允许你逐步替换Pod,以确保在更新过程中服务的高可用性
maxUnavailable
#这是一个可选字段,用于指定在滚动更新过程中可以有多少个Pod处于不可用状态。
#这个值可以是一个整数(表示具体的Pod数量)或者一个百分比
#例如,25%的maxUnavailable意味着在更新过程中,可以有最多25%的Pod处于不可用状态。
maxSurge
#这也是一个可选字段,用于指定在滚动更新过程中可以有多少个额外的Pod同时运行。
#这个值也可以是一个整数或百分比。例如25%的maxSurge意味着在更新过程中,
#可以比期望的Pod数量多运行最多25%的Pod。
3.4.3 查看当前nginx版本并更新
kubectl get pod,svc -owide -n luck
#查看指定命名空间(luck)资源类型(pod,svc)的详细信息
curl -I 10.244.2.37
#查看当前nginx版本
kubectl set image deployment/nginx nginx=nginx:1.22 -n luck
#将nginx版本更新为1.22版本
3.4.4 监听pod状态
kubectl get pods -w
#监听pod状态
#处于动态监听pod状态,由于使用的是滚动更新方式,所以会先生成一个新的pod,然后删除一个旧的pod,往后以此类推
#更新规则可通过“kubetl describe deployment nginx”的“RollingUpdateStrategy”查看,默认配置为“25% max unavailable, 25% max surge”,即按照25%的比例进行滚动更新。
3.4.5 查看pod的ip变化
kubectl get pod -owide -n luck
#查看pod详细信息ip变化
#pod更新后,ip改变
3.4.6 重新查看nginx版本信息
curl -I 10.244.2.47
curl -I 10.96.131.20
curl -I 192.168.10.13:31808
#查看nginx版本信息
3.5 回滚kubectl rollout
- 对资源进行回滚管理
kubectl rollout --help
#查看使用帮助
3.5.1 查看历史版本
kubectl rollout history deployment/nginx -n luck
#查看历史版本
----------------------------------------------------------------------------------------------------------
REVISION
#显示历史中的每个版本,最多记录三次
CHANGE-CAUSE
#显示触发该版本变更的原因。显示为 <none>,表示没有明确的变更原因被记录
----------------------------------------------------------------------------------------------------------
3.5.2 执行回滚到上一个版本
kubectl rollout undo deployment/nginx -n luck
#回滚到上一个版本
kubectl get pod -owide -n luck
#查看pod的ip变化(回滚后ip再次改变)
curl -I 10.244.1.52
#查看当前nginx版本
3.5.3 执行回滚到指定版本
kubectl rollout history deployment/nginx -n luck
#查看历史版本
kubectl rollout undo deployment/nginx --to-revision=5 -n luck
#回到revision5版本
kubectl get pod -owide -n luck
#查看pod的ip变化,回滚后ip发生改变
curl -I 10.244.1.56
#查看当前nginx版本
3.5.4 检查回滚状态
kubectl rollout status deployment/nginx -n luck
#检查回滚状态
3.6 删除kubectl delete
3.6.1 删除副本控制器
kubectl get deploy
#显示副本控制器
kubectl delete deployment/nginx
#删除deploy副本控制器
kubectl get deploy
#显示副本控制器
3.6.2 删除service
kubectl get svc
#显示svc资源类型信息
kubectl delete svc/nginx-service
#删除svc
kubectl get svc
#显示svc资源类型信息
kubectl get all
#显示所有信息
4、金丝雀发布/灰度发布(Canary Release)
4.1 金丝雀发布简介
- Deployment控制器支持自定义控制更新过程中的滚动节奏,如“暂停(pause)”或“继续(resume)”更新操作。比如等待第一批新的Pod资源创建完成后立即暂停更新过程,此时,仅存在一部分新版本的应用,主体部分还是旧的版本。然后,在筛选一小部分的用户请求路由到新版本的Pod应用,继续观察能否稳定地按期望的方式运行。确定没问题之后再继续完成余下的Pod资源滚动更新,否则立即回滚更新操作。这就是所谓的金丝雀发布。
4.2 更新deployment的版本,并配置暂停deployment
4.2.1 创建pods
kubectl create deployment nginx-xx --image=nginx:1.18 --replicas=3
#创建pod资源信息
kubectl get pod
#显示pod信息
4.2.2 发布服务
kubectl expose deployment nginx-xx --port=80 --target-port=80 --name=nginx-svc --type=NodePort
#暴露端口,对外提供服务
kubectl get svc -owide
#查看svc详细信息
4.2.3 查看nginx版本
curl -I 192.168.10.12:30555
#查看nginx版本信息
4.2.4 更新nginx版本并配置暂停
kubectl set image deploy/nginx-xx nginx-xx=nginx:1.20 && kubectl rollout pause deploy/nginx-xx
#更新nginx版本为1.20版本,并暂停更新
4.2.5 观察更新状态
kubectl rollout status deploy/nginx-xx
#查看更新状态
4.2.6 监控更新的过程
- 可以看到已经新增了一个pod,但是并未按照预期的状态去删除一个旧的资源,就是因为使用了pause暂停命令
kubectl get pod
#显示pod信息
4.2.7 查看nginx版本
kubectl get svc -owide
#显示svc详细信息
curl -I 192.168.10.12:32056
#查看nginx版本
4.2.8 resume继续更新
- 测试新版本没问题继续更新
kubectl rollout resume deploy/nginx-xx
#新版本没问题之后继续更新
4.2.9 查看最后的更新情况
kubectl get pods
#显示pod信息
curl -I 192.168.10.12:32056
#查看nginx版本信息
二、声明式管理
1、声明式管理方法
- 适合于对资源的修改操作
- 声明式资源管理方法依赖于资源配置清明文件对资源进行管理
- 资源配置清单文件有两种格式:yaml(人性化,易读),json(易于api接口解析)
- 对资源的观念里,是通过实现定义在同一资源配置清单内,再通过陈述式命令应用到k8s集群里
- 语法格式:kubectl create/apply/delete -f -o yaml
2、查看资源配置清单
#以yaml格式查看 nginx-xx 的 Deployment 资源的详细信息
[root@master ~]#kubectl get deployment/nginx-xx -o yaml
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "2"
creationTimestamp: "2024-05-21T18:16:27Z"
generation: 4
labels:
app: nginx-xx
managedFields:
- apiVersion: apps/v1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:labels:
.: {}
f:app: {}
f:spec:
f:progressDeadlineSeconds: {}
f:replicas: {}
f:revisionHistoryLimit: {}
f:selector: {}
f:strategy:
f:rollingUpdate:
.: {}
f:maxSurge: {}
f:maxUnavailable: {}
f:type: {}
f:template:
f:metadata:
f:labels:
.: {}
f:app: {}
f:spec:
f:containers:
k:{"name":"nginx"}:
.: {}
f:imagePullPolicy: {}
f:name: {}
f:resources: {}
f:terminationMessagePath: {}
f:terminationMessagePolicy: {}
f:dnsPolicy: {}
f:restartPolicy: {}
f:schedulerName: {}
f:securityContext: {}
f:terminationGracePeriodSeconds: {}
manager: kubectl-create
operation: Update
time: "2024-05-21T18:16:27Z"
- apiVersion: apps/v1
fieldsType: FieldsV1
fieldsV1:
f:spec:
f:template:
f:spec:
f:containers:
k:{"name":"nginx"}:
f:image: {}
manager: kubectl-set
operation: Update
time: "2024-05-21T18:32:26Z"
- apiVersion: apps/v1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
.: {}
f:deployment.kubernetes.io/revision: {}
f:status:
f:availableReplicas: {}
f:conditions:
.: {}
k:{"type":"Available"}:
.: {}
f:lastTransitionTime: {}
f:lastUpdateTime: {}
f:message: {}
f:reason: {}
f:status: {}
f:type: {}
k:{"type":"Progressing"}:
.: {}
f:lastTransitionTime: {}
f:lastUpdateTime: {}
f:message: {}
f:reason: {}
f:status: {}
f:type: {}
f:observedGeneration: {}
f:readyReplicas: {}
f:replicas: {}
f:updatedReplicas: {}
manager: kube-controller-manager
operation: Update
time: "2024-05-21T18:42:13Z"
name: nginx-xx
namespace: default
resourceVersion: "22223"
uid: b59db034-330c-4b1b-b032-8e47d821538a
spec:
progressDeadlineSeconds: 600
replicas: 3
revisionHistoryLimit: 10
selector:
matchLabels:
app: nginx-xx
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: nginx-xx
spec:
containers:
- image: nginx:1.20
imagePullPolicy: IfNotPresent
name: nginx
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
status:
availableReplicas: 3
conditions:
- lastTransitionTime: "2024-05-21T18:16:29Z"
lastUpdateTime: "2024-05-21T18:16:29Z"
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
- lastTransitionTime: "2024-05-21T18:41:29Z"
lastUpdateTime: "2024-05-21T18:42:13Z"
message: ReplicaSet "nginx-xx-857b968668" has successfully progressed.
reason: NewReplicaSetAvailable
status: "True"
type: Progressing
observedGeneration: 4
readyReplicas: 3
replicas: 3
updatedReplicas: 3
#以yaml格式查看 nginx-svc 的 service 资源的详细信息
[root@master ~]#kubectl get service/nginx-svc -o yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: "2024-05-21T18:17:54Z"
labels:
app: nginx-xx
managedFields:
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:labels:
.: {}
f:app: {}
f:spec:
f:externalTrafficPolicy: {}
f:ports:
.: {}
k:{"port":80,"protocol":"TCP"}:
.: {}
f:port: {}
f:protocol: {}
f:targetPort: {}
f:selector:
.: {}
f:app: {}
f:sessionAffinity: {}
f:type: {}
manager: kubectl-expose
operation: Update
time: "2024-05-21T18:17:54Z"
name: nginx-svc
namespace: default
resourceVersion: "20089"
uid: ff2ed757-d49d-4436-b2b9-8666d70935e5
spec:
clusterIP: 10.96.137.140
clusterIPs:
- 10.96.137.140
externalTrafficPolicy: Cluster
ports:
- nodePort: 32056
port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx-xx
sessionAffinity: None
type: NodePort
status:
loadBalancer: {}
3、解释资源配置清单
kubectl explain deployment.metadata
#解释资源配置清单
kubectl explain service.metadata
#解释资源配置清单
4、修改资源配置清单并应用
4.1 离线修改
- 修改yaml文件:并用kubectl apply -f xxxx.yaml文件使之生效
- 注意:当apply不生效时,先使用delete清除资源,再apply创建资源
kubectl get service nginx-svc -o yaml > nginx-svc.yaml
#将查询的yaml结果输出到nginx-svc.yaml文件中
vim nginx-svc.yaml
#编辑修改yaml文件
kubectl delete -f nginx-svc.yaml
#删除资源
kubectl apply -f nginx-svc.yaml
#新建资源
kubectl get svc
#查看service资源
4.2 在线修改
-
直接使用kubectl edit service nginx-service在线编辑配置资源清单并保存退出即时生效(如port: 888)
-
此修改方式不会对yaml文件内容修改
kubectl edit service nginx-service
#修改配置资源清单
kubectl get svc
#查看service资源
5、删除资源配置清单
5.1 陈述式删除
kubectl delete service/nginx
#陈述式删除
kubectl get svc
#查看service资源
5.2 声明式删除
kubectl delete -f nginx-svc.yaml
#声明式删除
kubectl get svc
#查看service资源