K8S 常规操作 命令 以Nginx.yaml 为例

Deployment
Deployment同样为Kubernetes的一个核心内容
1、创建deployment
[root@linux-node1 ~]# vim nginx-deployment.yaml  #使用yaml的方式进行创建应用
apiVersion: apps/v1  #apiVersion是当前配置格式的版本
kind: Deployment    #kind是要创建的资源类型,这里是Deploymnet
metadata:        #metadata是该资源的元数据,name是必须的元数据项
name: nginx-deployment
labels:
app: nginx
spec:          #spec部分是该Deployment的规则说明
replicas: 3      #relicas指定副本数量,默认为1
selector:
matchLabels:
app: nginx
template:      #template定义Pod的模板,这是配置的重要部分
metadata:     #metadata定义Pod的元数据,至少要顶一个label,label的key和value可以任意指定
labels:
app: nginx
spec:       #spec描述的是Pod的规则,此部分定义pod中每一个容器的属性,name和image是必需的
containers:
- name: nginx
image: nginx:1.13.12
ports:
- containerPort: 80

[root@linux-node1 ~]# kubectl create -f nginx-deployment.yaml #创建nginx-deployment应用
deployment.apps “nginx-deployment” created

2、查看deployment

[root@linux-node1 ~]# kubectl get deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
net-test 2 2 2 2 32m
nginx-deployment 3 3 3 0 10s

[root@linux-node1 ~]# kubectl describe deployment nginx-deployment #查看deployment详情
Name: nginx-deployment
Namespace: default
CreationTimestamp: Thu, 16 Aug 2018 16:13:37 +0800
Labels: app=nginx
Annotations: deployment.kubernetes.io/revision=1
Selector: app=nginx
Replicas: 3 desired | 3 updated | 3 total | 0 available | 3 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app=nginx
Containers:
nginx:
Image: nginx:1.13.12
Port: 80/TCP
Host Port: 0/TCP
Environment:
Mounts:
Volumes:
Conditions:
Type Status Reason


Available False MinimumReplicasUnavailable
Progressing True ReplicaSetUpdated
OldReplicaSets:
NewReplicaSet: nginx-deployment-6c45fc49cb (3/3 replicas created)
Events:
Type Reason Age From Message


Normal ScalingReplicaSet 1m deployment-controller Scaled up replica set nginx-deployment-6c45fc49cb to 3

3、查看Pod

[root@linux-node1 ~]# kubectl get pod #查看pod在状态,正在创建中,此时应该正在拉取镜像
NAME READY STATUS RESTARTS AGE
net-test-5767cb94df-djt98 1/1 Running 0 22m
net-test-5767cb94df-hcwv7 1/1 Unknown 0 34m
net-test-5767cb94df-zb8m4 1/1 Running 0 34m
nginx-deployment-6c45fc49cb-dmc22 0/1 ContainerCreating 0 2m
nginx-deployment-6c45fc49cb-fd8xm 0/1 ContainerCreating 0 2m
nginx-deployment-6c45fc49cb-sc8sh 0/1 ContainerCreating 0 2m

[root@linux-node1 ~]# kubectl describe pod nginx-deployment-6c45fc49cb-dmc22 #查看具体某个pod的状态信息

[root@linux-node1 ~]# kubectl get pod -o wide  #创建成功,状态为Running
NAME READY STATUS RESTARTS AGE IP NODE
net-test-5767cb94df-djt98 1/1 Running 0 24m 10.2.73.3 192.168.56.13
net-test-5767cb94df-hcwv7 1/1 Unknown 0 36m 10.2.10.2 192.168.56.12
net-test-5767cb94df-zb8m4 1/1 Running 0 36m 10.2.73.2 192.168.56.13
nginx-deployment-6c45fc49cb-dmc22 1/1 Running 0 4m 10.2.73.6 192.168.56.13
nginx-deployment-6c45fc49cb-fd8xm 1/1 Running 0 4m 10.2.73.4 192.168.56.13
nginx-deployment-6c45fc49cb-sc8sh 1/1 Running 0 4m 10.2.73.5 192.168.56.13

Deployment、ReplicaSet、Pod 都已经就绪。如果要删除这些资源,执行 kubectl delete deployment nginx-deployment 或者 kubectl delete -f nginx-deployment.yaml。

4、测试Pod访问
[root@linux-node1 ~]# curl --head http://10.2.73.6
HTTP/1.1 200 OK
Server: nginx/1.13.12
Date: Thu, 16 Aug 2018 08:18:14 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Mon, 09 Apr 2018 16:01:09 GMT
Connection: keep-alive
ETag: “5acb8e45-264”
Accept-Ranges: bytes

5、更新Deployment

[root@linux-node1 ~]# kubectl set image deployment/nginx-deployment nginx=nginx:1.15.2 --record #nginx的版本升级,由1.13.2升级为1.15.2,记录需要加参数–record
deployment.apps “nginx-deployment” image updated

[root@linux-node1 ~]# kubectl get deployment -o wide  #查看更新后的deployment,可以看到当前4个副本,说明还在滚动升级中
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
net-test 2 2 2 2 39m net-test alpine run=net-test
nginx-deployment 3 4 1 3 6m nginx nginx:1.15.2 app=nginx

6、查看更新历史
[root@linux-node1 ~]# kubectl rollout history deployment/nginx-deployment #查看更新历史记录
deployments “nginx-deployment”
REVISION CHANGE-CAUSE
1
2 kubectl set image deployment/nginx-deployment nginx=nginx:1.15.2 --record=true

7、查看具体某一个版本的升级历史

[root@linux-node1 ~]# kubectl rollout history deployment/nginx-deployment --revision=1
deployments “nginx-deployment” with revision #1
Pod Template:
Labels: app=nginx
pod-template-hash=2701970576
Containers:
nginx:
Image: nginx:1.13.12
Port: 80/TCP
Host Port: 0/TCP
Environment:
Mounts:
Volumes:

8、查看更新后的Deployment,并进行访问

[root@linux-node1 ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE
net-test-5767cb94df-djt98 1/1 Running 0 30m 10.2.73.3 192.168.56.13
net-test-5767cb94df-hcwv7 1/1 Unknown 0 42m 10.2.10.2 192.168.56.12
net-test-5767cb94df-zb8m4 1/1 Running 0 42m 10.2.73.2 192.168.56.13
nginx-deployment-64749d4b59-djttr 1/1 Running 0 37s 10.2.73.8 192.168.56.13
nginx-deployment-64749d4b59-jp7fw 1/1 Running 0 3m 10.2.73.7 192.168.56.13
nginx-deployment-64749d4b59-q4fsn 1/1 Running 0 33s 10.2.73.9 192.168.56.13
[root@linux-node1 ~]# curl --head http://10.2.73.7
HTTP/1.1 200 OK
Server: nginx/1.15.2  #版本已经升级为1.15.2
Date: Thu, 16 Aug 2018 08:24:09 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 24 Jul 2018 13:02:29 GMT
Connection: keep-alive
ETag: “5b572365-264”
Accept-Ranges: bytes

9、快速回滚到上一个版本

[root@linux-node1 ~]# kubectl rollout undo deployment/nginx-deployment #回滚上一个版本
deployment.apps “nginx-deployment”

[root@linux-node1 ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE
net-test-5767cb94df-djt98 1/1 Running 0 32m 10.2.73.3 192.168.56.13
net-test-5767cb94df-hcwv7 1/1 Unknown 0 43m 10.2.10.2 192.168.56.12
net-test-5767cb94df-zb8m4 1/1 Running 0 43m 10.2.73.2 192.168.56.13
nginx-deployment-6c45fc49cb-b9h84 1/1 Running 0 24s 10.2.73.11 192.168.56.13
nginx-deployment-6c45fc49cb-g4mrg 1/1 Running 0 26s 10.2.73.10 192.168.56.13
nginx-deployment-6c45fc49cb-k29kq 1/1 Running 0 21s 10.2.73.12 192.168.56.13
[root@linux-node1 ~]# curl --head http://10.2.73.10
HTTP/1.1 200 OK
Server: nginx/1.13.12
Date: Thu, 16 Aug 2018 08:25:35 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Mon, 09 Apr 2018 16:01:09 GMT
Connection: keep-alive
ETag: “5acb8e45-264”
Accept-Ranges: bytes

回滚完成,每一次更新或者回滚ip都会变化,所以需要通过vip进行访问,这就引入了service

10、使用service的vip进行访问应用

[root@linux-node1 ~]# vim nginx-service.yaml  #使用yaml方式创建service
kind: Service
apiVersion: v1
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:

  • protocol: TCP
    port: 80
    targetPort: 80

[root@linux-node1 ~]# kubectl create -f nginx-service.yaml   #创建service
service “nginx-service” created

[root@linux-node1 ~]# kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.1.0.1 443/TCP 4h
nginx-service ClusterIP 10.1.213.126 80/TCP 15s  #这个就是vip

[root@linux-node2 ~]# curl --head http://10.1.213.126  #在node2节点上进行访问vip测试,在node1上无法访问是因为没有安装kube-proxy导致无法访问
HTTP/1.1 200 OK
Server: nginx/1.13.12
Date: Thu, 16 Aug 2018 08:30:08 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Mon, 09 Apr 2018 16:01:09 GMT
Connection: keep-alive
ETag: “5acb8e45-264”
Accept-Ranges: bytes

11、扩容到5个节点

[root@linux-node1 ~]# kubectl scale deployment nginx-deployment --replicas 5  #对应用的副本数进行扩容,直接指定副本数为5
deployment.extensions “nginx-deployment” scaled

[root@linux-node1 ~]# kubectl get pod  #查看pod状态,可以看到已经增加到5个副本
NAME READY STATUS RESTARTS AGE
net-test-5767cb94df-djt98 1/1 Running 0 38m
net-test-5767cb94df-hcwv7 1/1 Unknown 0 50m
net-test-5767cb94df-zb8m4 1/1 Running 0 50m
nginx-deployment-6c45fc49cb-b9h84 1/1 Running 0 6m
nginx-deployment-6c45fc49cb-g4mrg 1/1 Running 0 7m
nginx-deployment-6c45fc49cb-k29kq 1/1 Running 0 6m
nginx-deployment-6c45fc49cb-n9qkx 1/1 Running 0 24s
nginx-deployment-6c45fc49cb-xpx9s 1/1 Running 0 24s

##扩容与减容

#kubectl get deployment ##获取deployment名称
#kubectl scale deployment nginx-deployment --replicas=3 扩容到3个
#kubectl scale deployment nginx-deployment --replicas=1 恢复成1个
##动态处理CPU资源

#kubectl autoscale deployment nginx-deployment --min=2 --max=10 --cpu-percent=80

<think>嗯,用户想知道如何在Kubernetes中删除编排资源,特别是用kubectl删除deployment的示。首先,我需要回忆一下kubectl的相关命令。记得kubectl delete是用来删除资源的,可以指定资源类型和名称,或者用-f参数根据配置文件删除。 那用户提到的“编排文件”应该是指那些定义资源的YAML文件吧?比如Deployment、Service这些。所以用kubectl delete -f <文件>应该可以删除文件中定义的所有资源。不过要确认一下这个操作的实际效果,是否会删除关联的资源,比如Pod。比如删除Deployment的话,默认会删除对应的ReplicaSet和Pod,这可能需要解释清楚。 然后,用户可能需要具体的示。比如,删除名为my-deployment的Deployment,命令应该是kubectl delete deployment my-deployment。如果是通过文件创建的,也可以用kubectl delete -f deployment.yaml。这时候需要确保文件路径正确。 另外,用户可能关心删除时的选项,比如--grace-period=0强制立即删除,或者--ignore-not-found忽略不存在的资源错误。这些参数可能在需要快速清理或者脚本中使用比较有用。 还需要注意,删除资源可能会有依赖关系,比如Service可能依赖Deployment,不过实际上Service和Deployment是独立的资源,删除Deployment不会影响Service,需要分别删除。或者如果它们都在同一个YAML文件里,用kubectl delete -f一次性删除会更方便。 可能用户在使用过程中遇到问题,比如删除了Deployment但Pod还在,这时候需要检查是否Deployment确实被删除了,或者是否有其他控制器在管理这些Pod。比如StatefulSet或者DaemonSet的情况不同。 另外,引用部分提到的引用[1]中的kubectl apply -f,对应删除也是同样的文件,所以可能需要强调使用相同的配置文件来维护资源的一致性。引用[4]中提到的Deployment更新策略,可能删除Deployment会影响其管理的资源,需要确认删除后的行为是否符合预期。 用户还可能想知道如何批量删除资源,比如所有Deployment,或者根据标签选择器删除。这时候可以用kubectl delete deployment --all或者--selector=app=my-app这样的命令。 总结下来,回答应该包括基本命令、示、常用参数以及注意事项,同时引用相关的参考资料来支持回答的正确性。确保用户能够理解不同删除方式的区别,以及如何安全有效地管理Kubernetes资源。</think>### 在Kubernetes中删除编排资源的步骤 在Kubernetes中,通过`kubectl`删除编排资源(如Deployment、Service等)有以下几种常见方法: #### 1. **直接通过资源名称删除** 使用`kubectl delete`命令指定资源类型和名称。如,删除名为`my-deployment`的Deployment: ```bash $ kubectl delete deployment my-deployment ``` 该命令会删除Deployment及其关联的ReplicaSet和Pod[^4]。 #### 2. **通过配置文件删除** 如果资源是通过YAML文件创建的,可以通过`-f`参数指定配置文件删除所有相关资源: ```bash $ kubectl delete -f deployment.yaml ``` 此方式适用于批量操作,确保资源的一致性[^1]。 #### 3. **删除所有指定类型的资源** 删除某一类型的所有资源(如所有Deployment): ```bash $ kubectl delete deployment --all ``` 需谨慎使用,避免误删关键资源。 --- ### 常用参数与注意事项 - **强制删除**:添加`--grace-period=0 --force`参数可强制立即删除资源(不推荐常规使用)。 - **忽略不存在的资源**:使用`--ignore-not-found`参数忽略未找到资源的错误。 - **级联删除**:默认情况下,删除Deployment会级联删除其管理的Pod。若需保留Pod,可使用`--cascade=orphan`参数。 --- ### 示场景 假设存在名为`nginx-deployment`的Deployment,其YAML文件为`nginx.yaml`: 1. **通过名称删除**: ```bash $ kubectl delete deployment nginx-deployment ``` 2. **通过文件删除**: ```bash $ kubectl delete -f nginx.yaml ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值