Scale the app
Scaling will increase the number of Pods to the new desired state.
Pre-config: expose the app publicly
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 6d
kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080
service/kubernetes-bootcamp exposed
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 6d
kubernetes-bootcamp NodePort 10.43.136.101 <none> 8080:32673/TCP 5s
kubectl get pods
NAME READY STATUS RESTARTS AGE
kubernetes-bootcamp-855d5cc575-v22dh 1/1 Running 0 2d
kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
kubernetes-bootcamp-855d5cc575-v22dh 1/1 Running 0 2d app=kubernetes-bootcamp,pod-template-hash=855d5cc575,version=v1
kubectl get services --show-labels
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE LABELS
kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 6d component=apiserver,provider=kubernetes
kubernetes-bootcamp NodePort 10.43.136.101 <none> 8080:32673/TCP 52s app=kubernetes-bootcamp
一些概念
"App" 指的是您要在 Kubernetes 中运行的应用程序或服务。这可能包括一个或多个容器,定义了应用程序的代码和运行时环境。
"Deployment" 用于声明性地定义和管理 Pod 的副本, 指定应用程序的期望状态,包括副本数量、容器镜像和其他配置。
负责 Pod 的创建、更新和删除,以确保应用程序的指定副本数量在运行。实现滚动更新、回滚、扩展和缩减副本等操作。
"ReplicaSet" 负责确保在集群中始终运行指定数量的 Pod 副本。每个 Deployment 关联到一个或多个 ReplicaSet。
"Service" 用于定义一组 Pod 的网络端点,并提供负载均衡和服务发现。用于定义一个网络入口,将流量引导到一组 Pod。通常,一个 Service 与一个 Deployment 相关联,以提供对该 Deployment 管理的 Pod 的访问。
使用场景一: distribute traffic to all avalible pods.
当一个APP 运行在多个pod上时,需要一个方法将流量分发到各个pod上去。 Service 有集成的load-balancer可以实现网络分发的功能,它会使用endpoints来监控所有available pods.
Scaling a deployment
查看 deployment
kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
kubernetes-bootcamp 1/1 1 1 2d4h
NAME: lists the names of the Deployments in the cluster.
READY: 当前/预期 replicas。 shows the ratio of CURRENT/DESIRED replicas
UP-TO-DATE: 已达到预期的replicas数量。 displays the number of replicas that have been updated to achieve the desired state.
AVAILABLE: 能够给user使用的replica数量。 displays how many replicas of the application are available to your users.
AGE: APP running time. displays the amount of time that the application has been running.
查看replicaSet 数量
命名: deployment-name-randomstring
kubectl get rs
NAME DESIRED CURRENT READY AGE
kubernetes-bootcamp-855d5cc575 1 1 1 2d5h
scale deployment 从 1 到 4
kubectl scale deployments/kubernetes-bootcamp --replicas=4
# deployment.apps/kubernetes-bootcamp scaled
kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
kubernetes-bootcamp 1/4 4 1 2d5h
确认scale之后的信息
kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
kubernetes-bootcamp 4/4 4 4 2d5h
kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kubernetes-bootcamp-855d5cc575-kxrj6 1/1 Running 0 69s 10.42.236.127 ali1-atlantic-node-1 <none> <none>
kubernetes-bootcamp-855d5cc575-v22dh 1/1 Running 0 2d5h 10.42.0.22 ali1-atlantic-node-3 <none> <none>
kubernetes-bootcamp-855d5cc575-vqff8 1/1 Running 0 69s 10.42.65.179 ali1-atlantic-host <none> <none>
kubernetes-bootcamp-855d5cc575-x5ksr 1/1 Running 0 69s 10.42.208.227 ali1-atlantic-node-2 <none> <none>
可以看到具体的event:Scaled up replica set kubernetes-bootcamp-855d5cc575 to 4 from 1
kubectl describe deployments/kubernetes-bootcamp
Name: kubernetes-bootcamp
Namespace: default
CreationTimestamp: Sun, 21 Jan 2024 22:27:58 -0800
Labels: app=kubernetes-bootcamp
Annotations: deployment.kubernetes.io/revision: 1
Selector: app=kubernetes-bootcamp
Replicas: 4 desired | 4 updated | 4 total | 4 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app=kubernetes-bootcamp
Containers:
kubernetes-bootcamp:
Image: gcr.io/google-samples/kubernetes-bootcamp:v1
Port: <none>
Host Port: <none>
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Progressing True NewReplicaSetAvailable
Available True MinimumReplicasAvailable
OldReplicaSets: <none>
NewReplicaSet: kubernetes-bootcamp-855d5cc575 (4/4 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 2m14s deployment-controller Scaled up replica set kubernetes-bootcamp-855d5cc575 to 4 from 1
提取APP 相关port 和 随便哪个IP
但是外部是无法通过podip来访问的,~~得需要通过serviceIP, ~~
访问app, 要用它的node 和 port, 因为type是NodePort,意思是所有node上的这个port都可以访问
# 提取service的port
export NODE_PORT="$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')"
echo $NODE_PORT
# 32673
# 查看pod相关的IP,但是外部是无法通过podip来访问的,得需要通过serviceIP,
kubectl get pods -l app=kubernetes-bootcamp -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kubernetes-bootcamp-855d5cc575-kxrj6 1/1 Running 0 10m 10.42.236.127 ali1-atlantic-node-1 <none> <none>
kubernetes-bootcamp-855d5cc575-v22dh 1/1 Running 0 2d5h 10.42.0.22 ali1-atlantic-node-3 <none> <none>
kubernetes-bootcamp-855d5cc575-vqff8 1/1 Running 0 10m 10.42.65.179 ali1-atlantic-host <none> <none>
kubernetes-bootcamp-855d5cc575-x5ksr 1/1 Running 0 10m 10.42.208.227 ali1-atlantic-node-2 <none> <none>
# 查看service
kubectl get services -l app=kubernetes-bootcamp
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-bootcamp NodePort 10.43.136.101 <none> 8080:32673/TCP 4h29m
# 查看service详情
kubectl describe services/kubernetes-bootcamp
Name: kubernetes-bootcamp
Namespace: default
Labels: app=kubernetes-bootcamp
Annotations: <none>
Selector: app=kubernetes-bootcamp
Type: NodePort
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.43.136.101
IPs: 10.43.136.101
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
NodePort: <unset> 32673/TCP
Endpoints: 10.42.0.22:8080,10.42.208.227:8080,10.42.236.127:8080 + 1 more...
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
可以看到,每次访问都命中不同的pod, 也就是说做了load-balance.
export NODE_PORT="$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')"
ali1-atlantic-host:~/k8scluster-automation # echo "NODE_PORT=$NODE_PORT"
NODE_PORT=32673
ali1-atlantic-host:~/k8scluster-automation #
ali1-atlantic-host:~/k8scluster-automation # export NODE_IP="$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[?(@.type=="InternalIP")].address}')"
ali1-atlantic-host:~/k8scluster-automation # echo $NODE_IP
10.224.35.217
# 可以看到,每次访问都命中不同的pod, 也就是说做了load-balance.
ali1-atlantic-host:~/k8scluster-automation # curl http://"$NODE_IP:$NODE_PORT"
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-855d5cc575-kxrj6 | v=1
ali1-atlantic-host:~/k8scluster-automation # curl http://"$NODE_IP:NODE_PORT"
curl: (3) URL using bad/illegal format or missing URL
ali1-atlantic-host:~/k8scluster-automation # curl http://"$NODE_IP:$NODE_PORT"
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-855d5cc575-kxrj6 | v=1
ali1-atlantic-host:~/k8scluster-automation # curl http://"$NODE_IP:$NODE_PORT"
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-855d5cc575-vqff8 | v=1
ali1-atlantic-host:~/k8scluster-automation # curl http://"$NODE_IP:$NODE_PORT"
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-855d5cc575-x5ksr | v=1
ali1-atlantic-host:~/k8scluster-automation # curl http://"$NODE_IP:$NODE_PORT"
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-855d5cc575-x5ksr | v=1
ali1-atlantic-host:~/k8scluster-automation # curl http://"$NODE_IP:$NODE_PORT"
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-855d5cc575-x5ksr | v=1
ali1-atlantic-host:~/k8scluster-automation # curl http://"$NODE_IP:$NODE_PORT"
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-855d5cc575-kxrj6 | v=1
暂时无法解析hostname
curl http://"kubernetes-bootcamp:$NODE_PORT"
curl: (6) Could not resolve host: kubernetes-bootcamp
Scale Down 从4到2
# scale down from 4 to 2
kubectl scale deployments/kubernetes-bootcamp --replicas=2
#deployment.apps/kubernetes-bootcamp scaled
# check the deployment information
kubectl get deployments/kubernetes-bootcamp
NAME READY UP-TO-DATE AVAILABLE AGE
kubernetes-bootcamp 2/2 2 2 2d6h
# check the service information
kubectl get service -l app=kubernetes-bootcamp
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-bootcamp NodePort 10.43.136.101 <none> 8080:32673/TCP 5h30m
# show the detail information, 2 endpoints
kubectl describe services/kubernetes-bootcamp
Name: kubernetes-bootcamp
Namespace: default
Labels: app=kubernetes-bootcamp
Annotations: <none>
Selector: app=kubernetes-bootcamp
Type: NodePort
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.43.136.101
IPs: 10.43.136.101
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
NodePort: <unset> 32673/TCP
Endpoints: 10.42.0.22:8080,10.42.236.127:8080
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kubernetes-bootcamp-855d5cc575-kxrj6 1/1 Running 0 80m 10.42.236.127 ali1-atlantic-node-1 <none> <none>
kubernetes-bootcamp-855d5cc575-v22dh 1/1 Running 0 2d6h 10.42.0.22 ali1-atlantic-node-3 <none> <none>
使用场景二: rolling up without downtime.
用户希望APP 一直是available, 开发被要求一天要升级多个版本, rolling update能满足所有人的需求,保证升级过程中0停机。
A rolling update allows a Deployment update to take place with zero downtime.
查看当前service相关pod的详情
kubectl describe pods -l app=kubernetes-bootcamp
kubectl describe pods -l app=kubernetes-bootcamp
Name: kubernetes-bootcamp-855d5cc575-kxrj6
Namespace: default
Priority: 500000
Priority Class Name: cmo-medium-priority
Service Account: default
Node: ali1-atlantic-node-1/10.224.35.216
Start Time: Wed, 24 Jan 2024 03:31:50 -0800
Labels: app=kubernetes-bootcamp
pod-template-hash=855d5cc575
Annotations: cni.projectcalico.org/containerID: 45bb5644d9dc7135a31392c35eaaec6dad831c3a47d0b131da86b1167e05b40c
cni.projectcalico.org/podIP: 10.42.236.127/32
cni.projectcalico.org/podIPs: 10.42.236.127/32
k8s.v1.cni.cncf.io/network-status:
[{
"name": "k8s-pod-network",
"ips": [
"10.42.236.127"
],
"default": true,
"dns": {}
}]
Status: Running
IP: 10.42.236.127
IPs:
IP: 10.42.236.127
Controlled By: ReplicaSet/kubernetes-bootcamp-855d5cc575
Containers:
kubernetes-bootcamp:
Container ID: containerd://9a4973511ec64365197a5693b42ebbdfcc453965055913d65114c9fc1714b10c
Image: gcr.io/google-samples/kubernetes-bootcamp:v1
Image ID: gcr.io/google-samples/kubernetes-bootcamp@sha256:0d6b8ee63bb57c5f5b6156f446b3bc3b3c143d233037f3a2f00e279c8fcc64af
Port: <none>
Host Port: <none>
State: Running
Started: Wed, 24 Jan 2024 03:32:24 -0800
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-zkdff (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
kube-api-access-zkdff:
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>
将当前pod image升级到V2
注意到,升级后,除了Image 变为V2, event事件里也有详细message体现
kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
deployment.apps/kubernetes-bootcamp image updated
ali1-atlantic-host:~/k8scluster-automation # kubectl describe pods -l app=kubernetes-bootcamp
Name: kubernetes-bootcamp-69b6f9fbb9-rvcz4
Namespace: default
Priority: 500000
Priority Class Name: cmo-medium-priority
Service Account: default
Node: ali1-atlantic-node-3/10.224.35.209
Start Time: Wed, 24 Jan 2024 04:58:39 -0800
Labels: app=kubernetes-bootcamp
pod-template-hash=69b6f9fbb9
Annotations: cni.projectcalico.org/containerID: 764a605c2c9b35abe4f78576fe5e902c5006d14c519aeda55e1dad5fc99dc637
cni.projectcalico.org/podIP: 10.42.0.23/32
cni.projectcalico.org/podIPs: 10.42.0.23/32
k8s.v1.cni.cncf.io/network-status:
[{
"name": "k8s-pod-network",
"ips": [
"10.42.0.23"
],
"default": true,
"dns": {}
}]
Status: Pending
IP:
IPs: <none>
Controlled By: ReplicaSet/kubernetes-bootcamp-69b6f9fbb9
Containers:
kubernetes-bootcamp:
Container ID:
Image: jocatalin/kubernetes-bootcamp:v2
Image ID:
Port: <none>
Host Port: <none>
State: Waiting
Reason: ContainerCreating
Ready: False
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-tzpnr (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
kube-api-access-tzpnr:
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:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 2s default-scheduler Successfully assigned default/kubernetes-bootcamp-69b6f9fbb9-rvcz4 to ali1-atlantic-node-3
Normal AddedInterface 2s multus Add eth0 [10.42.0.23/32] from k8s-pod-network
Normal Pulling 1s kubelet Pulling image "jocatalin/kubernetes-bootcamp:v2"
查看pods状态
# 有一个pod 终止了
kubectl get pods
NAME READY STATUS RESTARTS AGE
kubernetes-bootcamp-69b6f9fbb9-nkncs 1/1 Running 0 98s
kubernetes-bootcamp-69b6f9fbb9-rvcz4 1/1 Running 0 2m24s
kubernetes-bootcamp-855d5cc575-kxrj6 1/1 Terminating 0 89m
# 活跃的pod变成2个了
kubectl get pods
NAME READY STATUS RESTARTS AGE
kubernetes-bootcamp-69b6f9fbb9-nkncs 1/1 Running 0 2m16s
kubernetes-bootcamp-69b6f9fbb9-rvcz4 1/1 Running 0 3m2s
# event事件
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 3m36s default-scheduler Successfully assigned default/kubernetes-bootcamp-69b6f9fbb9-nkncs to ali1-atlantic-host
Normal AddedInterface 3m36s multus Add eth0 [10.42.65.180/32] from k8s-pod-network
Warning Failed 2m50s (x3 over 3m35s) kubelet Failed to pull image "jocatalin/kubernetes-bootcamp:v2": rpc error: code = Unknown desc = failed to pull and unpack image "docker.io/jocatalin/kubernetes-bootcamp:v2": failed to copy: httpReadSeeker: failed open: unexpected status code https://registry-1.docker.io/v2/jocatalin/kubernetes-bootcamp/manifests/sha256:fb1a3ced00cecfc1f83f18ab5cd14199e30adc1b49aa4244f5d65ad3f5feb2a5: 429 Too Many Requests - Server message: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit
Warning Failed 2m50s (x3 over 3m35s) kubelet Error: ErrImagePull
Normal BackOff 2m13s (x5 over 3m35s) kubelet Back-off pulling image "jocatalin/kubernetes-bootcamp:v2"
Warning Failed 2m13s (x5 over 3m35s) kubelet Error: ImagePullBackOff
Normal Pulling 2m2s (x4 over 3m36s) kubelet Pulling image "jocatalin/kubernetes-bootcamp:v2"
Normal Pulled 2m1s kubelet Successfully pulled image "jocatalin/kubernetes-bootcamp:v2" in 1.066946066s (1.066969801s including waiting)
Normal Created 2m1s kubelet Created container kubernetes-bootcamp
Normal Started 2m kubelet Started container kubernetes-bootcamp
Verify the update
kubectl describe services/kubernetes-bootcamp
Name: kubernetes-bootcamp
Namespace: default
Labels: app=kubernetes-bootcamp
Annotations: <none>
Selector: app=kubernetes-bootcamp
Type: NodePort
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.43.136.101
IPs: 10.43.136.101
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
NodePort: <unset> 32673/TCP
Endpoints: 10.42.0.23:8080,10.42.65.180:8080
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
确认每次curl 都能访问到不同的pod,而且version == V2
export NODE_PORT="$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')"
ali1-atlantic-host:~/k8scluster-automation #
ali1-atlantic-host:~/k8scluster-automation #
ali1-atlantic-host:~/k8scluster-automation # echo "NODE_PORT=$NODE_PORT"
NODE_PORT=32673
ali1-atlantic-host:~/k8scluster-automation #
ali1-atlantic-host:~/k8scluster-automation # echo $NODE_IP
10.224.35.217
ali1-atlantic-host:~/k8scluster-automation #
ali1-atlantic-host:~/k8scluster-automation # curl http://"$NODE_IP:$NODE_PORT"
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-69b6f9fbb9-rvcz4 | v=2
ali1-atlantic-host:~/k8scluster-automation # curl http://"$NODE_IP:$NODE_PORT"
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-69b6f9fbb9-nkncs | v=2
ali1-atlantic-host:~/k8scluster-automation # curl http://"$NODE_IP:$NODE_PORT"
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-69b6f9fbb9-rvcz4 | v=2
确认roll update state
kubectl rollout status deployments/kubernetes-bootcamp
deployment "kubernetes-bootcamp" successfully rolled out
Roll back an update
因为V10不存在,所以这条执行之后,会有个pod 处于error状态,无法pull image
kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=gcr.io/google-samples/kubernetes-bootcamp:v10
deployment.apps/kubernetes-bootcamp image updated
ali1-atlantic-host:~/k8scluster-automation # kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
kubernetes-bootcamp 2/2 1 2 2d6h
ali1-atlantic-host:~/k8scluster-automation #
ali1-atlantic-host:~/k8scluster-automation # kubectl get pods
NAME READY STATUS RESTARTS AGE
kubernetes-bootcamp-66566cb7f-b8qq5 0/1 ErrImagePull 0 13s
kubernetes-bootcamp-69b6f9fbb9-nkncs 1/1 Running 0 9m39s
kubernetes-bootcamp-69b6f9fbb9-rvcz4 1/1 Running 0 10m
kubectl logs kubernetes-bootcamp-66566cb7f-b8qq5
Error from server (BadRequest): container "kubernetes-bootcamp" in pod "kubernetes-bootcamp-66566cb7f-b8qq5" is waiting to start: trying and failing to pull image
查看deployment细节
kubectl describe deployment kubernetes-bootcamp
Name: kubernetes-bootcamp
Namespace: default
CreationTimestamp: Sun, 21 Jan 2024 22:27:58 -0800
Labels: app=kubernetes-bootcamp
Annotations: deployment.kubernetes.io/revision: 3
Selector: app=kubernetes-bootcamp
Replicas: 2 desired | 1 updated | 3 total | 2 available | 1 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app=kubernetes-bootcamp
Containers:
kubernetes-bootcamp:
Image: gcr.io/google-samples/kubernetes-bootcamp:v10
Port: <none>
Host Port: <none>
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing False ProgressDeadlineExceeded
OldReplicaSets: kubernetes-bootcamp-855d5cc575 (0/0 replicas created), kubernetes-bootcamp-69b6f9fbb9 (2/2 replicas created)
NewReplicaSet: kubernetes-bootcamp-66566cb7f (1/1 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 38m deployment-controller Scaled down replica set kubernetes-bootcamp-855d5cc575 to 2 from 4
Normal ScalingReplicaSet 26m deployment-controller Scaled up replica set kubernetes-bootcamp-69b6f9fbb9 to 1
Normal ScalingReplicaSet 25m deployment-controller Scaled down replica set kubernetes-bootcamp-855d5cc575 to 1 from 2
Normal ScalingReplicaSet 25m deployment-controller Scaled up replica set kubernetes-bootcamp-69b6f9fbb9 to 2 from 1
Normal ScalingReplicaSet 24m deployment-controller Scaled down replica set kubernetes-bootcamp-855d5cc575 to 0 from 1
Normal ScalingReplicaSet 16m deployment-controller Scaled up replica set kubernetes-bootcamp-66566cb7f to 1
rollback 回去
kubectl rollout undo deployments/kubernetes-bootcamp
deployment.apps/kubernetes-bootcamp rolled back
ali1-atlantic-host:~/k8scluster-automation #
ali1-atlantic-host:~/k8scluster-automation # kubectl get pods
NAME READY STATUS RESTARTS AGE
kubernetes-bootcamp-69b6f9fbb9-nkncs 1/1 Running 0 28m
kubernetes-bootcamp-69b6f9fbb9-rvcz4 1/1 Running 0 28m
clear env 删除deployment 和 service
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 6d6h
kubernetes-bootcamp NodePort 10.43.136.101 <none> 8080:32673/TCP 6h9m
ali1-atlantic-host:~/k8scluster-automation # kubectl delete deployments/kubernetes-bootcamp services/kubernetes-bootcamp
deployment.apps "kubernetes-bootcamp" deleted
service "kubernetes-bootcamp" deleted
ali1-atlantic-host:~/k8scluster-automation # kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 6d6h
kubectl get deployments
No resources found in default namespace.
ali1-atlantic-host:~/k8scluster-automation # kubectl get pods
No resources found in default namespace.
标签:kubectl,Kubernetes,kubernetes,IP,bootcamp,学习,atlantic,整理,ali1
From: https://www.cnblogs.com/vivivi/p/17985936