启用kubectl命令自动补全
[root@k8s01 ~]# yum -y install bash-completion
[root@k8s01 ~]# source /usr/share/bash-completion/bash_completion
[root@k8s01 ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc
[root@k8s01 ~]# exit
logout
准备Deployment配置文件
[root@k8s01 ~]# vi nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.17.10
ports:
- containerPort: 80
应用Deployment配置文件
[root@k8s01 ~]# kubectl apply -f nginx-deployment.yaml
deployment.apps/nginx-deployment created
[root@k8s01 ~]#
获取deployments列表和pods列表
[root@k8s01 ~]# kubectl get deployments.apps
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 3/3 3 3 22s
[root@k8s01 ~]#
[root@k8s01 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-cc5db57d4-5q9lz 1/1 Running 0 39s
nginx-deployment-cc5db57d4-dncbs 1/1 Running 0 39s
nginx-deployment-cc5db57d4-gsp6l 1/1 Running 0 39s
[root@k8s01 ~]#
查看deployment详情(deployment属于controller的一种类型,通过replicaset来管理pod,Events记录replicaset启动过程)
[root@k8s01 ~]# kubectl describe deployments.apps nginx-deployment
Name: nginx-deployment
Namespace: default
CreationTimestamp: Tue, 21 Apr 2020 10:33:38 +0000
Labels: app=nginx
Annotations: deployment.kubernetes.io/revision: 1
Selector: app=nginx
Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app=nginx
Containers:
nginx:
Image: nginx:1.17.10
Port: 80/TCP
Host Port: 0/TCP
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing True NewReplicaSetAvailable
OldReplicaSets: <none>
NewReplicaSet: nginx-deployment-cc5db57d4 (3/3 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 85s deployment-controller Scaled up replica set nginx-deployment-cc5db57d4 to 3
[root@k8s01 ~]#
获取replicaset列表(显示已就绪3个副本,Events为3个副本pod创建记录)
[root@k8s01 ~]# kubectl get replicasets.apps
NAME DESIRED CURRENT READY AGE
nginx-deployment-cc5db57d4 3 3 3 11m
[root@k8s01 ~]#
查看relicasets详情
[root@k8s01 ~]# kubectl describe replicasets.apps nginx-deployment-cc5db57d4
Name: nginx-deployment-cc5db57d4
Namespace: default
Selector: app=nginx,pod-template-hash=cc5db57d4
Labels: app=nginx
pod-template-hash=cc5db57d4
Annotations: deployment.kubernetes.io/desired-replicas: 3
deployment.kubernetes.io/max-replicas: 4
deployment.kubernetes.io/revision: 1
Controlled By: Deployment/nginx-deployment
Replicas: 3 current / 3 desired
Pods Status: 3 Running / 0 Waiting / 0 Succeeded / 0 Failed
Pod Template:
Labels: app=nginx
pod-template-hash=cc5db57d4
Containers:
nginx:
Image: nginx:1.17.10
Port: 80/TCP
Host Port: 0/TCP
Environment: <none>
Mounts: <none>
Volumes: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulCreate 13m replicaset-controller Created pod: nginx-deployment-cc5db57d4-gsp6l
Normal SuccessfulCreate 13m replicaset-controller Created pod: nginx-deployment-cc5db57d4-5q9lz
Normal SuccessfulCreate 13m replicaset-controller Created pod: nginx-deployment-cc5db57d4-dncbs
[root@k8s01 ~]#
获取pods列表(三个副本Pod都处于运行状态)
[root@k8s01 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-cc5db57d4-5q9lz 1/1 Running 0 15m
nginx-deployment-cc5db57d4-dncbs 1/1 Running 0 15m
nginx-deployment-cc5db57d4-gsp6l 1/1 Running 0 15m
[root@k8s01 ~]#
查看pods详情(Controolled By指明该pod由ReplicaSet控制生成,Events记录了该pod启动过程)
[root@k8s01 ~]# kubectl describe pods nginx-deployment-cc5db57d4-5q9lz
Name: nginx-deployment-cc5db57d4-5q9lz
Namespace: default
Priority: 0
Node: k8s03/172.31.6.113
Start Time: Tue, 21 Apr 2020 10:33:38 +0000
Labels: app=nginx
pod-template-hash=cc5db57d4
Annotations: <none>
Status: Running
IP: 10.244.2.17
IPs:
IP: 10.244.2.17
Controlled By: ReplicaSet/nginx-deployment-cc5db57d4
Containers:
nginx:
Container ID: docker://e062b14bbf7670d5d3c45e983c88b36caa2ed3700fd03dbdb9adf06724fba9bf
Image: nginx:1.17.10
Image ID: docker-pullable://nginx@sha256:d81f010955749350ef31a119fb94b180fde8b2f157da351ff5667ae037968b28
Port: 80/TCP
Host Port: 0/TCP
State: Running
Started: Tue, 21 Apr 2020 10:33:39 +0000
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-pkjh8 (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
default-token-pkjh8:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-pkjh8
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 16m default-scheduler Successfully assigned default/nginx-deployment-cc5db57d4-5q9lz to k8s03
Normal Pulled 16m kubelet, k8s03 Container image "nginx:1.17.10" already present on machine
Normal Created 16m kubelet, k8s03 Created container nginx
Normal Started 16m kubelet, k8s03 Started container nginx
[root@k8s01 ~]#
流程总结:
(1)用户通过kubectl创建Deployment。
(2)Deployment创建ReplicaSet。
(3)ReplicaSet创建Pod。