在kubernetes中,Pod是最小的控制单元,但是kubernetes很少直接控制Pod,一般都是通过Pod控制器来完成的。Pod控制器用于pod的管理,确保pod资源符合预期的状态,当pod的资源出现故障时,会尝试进行重启或重建pod。
在kubernetes中Pod控制器的种类有很多,本章节只介绍一种:Deployment。
命令操作
# 命令格式: kubectl create deployment 名称 [参数]
# --image 指定pod的镜像
# --port ? 指定端口
# --replicas 指定创建pod数量
# --namespace 指定namespace
[root@master ~]# kubectl create deploy nginx --image=nginx:latest --port=80 --replicas=3 -n dev
deployment.apps/nginx created
?
# 查看创建的Pod
[root@master ~]# kubectl get pods -n dev
NAME ? ? ? ? ? ? ? ? ? ? READY ? STATUS ? RESTARTS ? AGE
nginx-5ff7956ff6-6k8cb ? 1/1 ? ? Running ? 0 ? ? ? ? 19s
nginx-5ff7956ff6-jxfjt ? 1/1 ? ? Running ? 0 ? ? ? ? 19s
nginx-5ff7956ff6-v6jqw ? 1/1 ? ? Running ? 0 ? ? ? ? 19s
?
# 查看deployment的信息
[root@master ~]# kubectl get deploy -n dev
NAME ? READY ? UP-TO-DATE ? AVAILABLE ? AGE
nginx ? 3/3 ? ? 3 ? ? ? ? ? ?3 ? ? ? ? ? 2m42s
?
# UP-TO-DATE:成功升级的副本数量
# AVAILABLE:可用副本的数量
[root@master ~]# kubectl get deploy -n dev -o wide
NAME ? READY UP-TO-DATE AVAILABLE ? AGE ? ? CONTAINERS ? IMAGES ? ? ? ? ? ? SELECTOR
nginx ? 3/3 ? ? 3 ? ? ? ? 3 ? ? ? ? ? 2m51s ? nginx ? ? ? nginx:latest ? ? ? ?run=nginx
?
# 查看deployment的详细信息
[root@master ~]# kubectl describe deploy nginx -n dev
Name: ? ? ? ? ? ? ? ? ? nginx
Namespace: ? ? ? ? ? ? dev
CreationTimestamp: ? ? Wed, 08 May 2021 11:14:14 +0800
Labels: ? ? ? ? ? ? ? ? run=nginx
Annotations: ? ? ? ? ? deployment.kubernetes.io/revision: 1
Selector: ? ? ? ? ? ? ? run=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: ?run=nginx
Containers:
? nginx:
? Image: ? ? ? nginx:latest
? 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-5ff7956ff6 (3/3 replicas created)
Events:
Type ? Reason ? ? ? ? ? ? Age ? From ? ? ? ? ? ? ? ? ? Message
?---- ? ?------ ? ? ? ? ? ? ---- ? ---- ? ? ? ? ? ? ? ? ? -------
Normal ScalingReplicaSet 5m43s deployment-controller Scaled up replicaset nginx-5ff7956ff6 to 3
?
# 删除
[root@master ~]# kubectl delete deploy nginx -n dev
deployment.apps "nginx" deleted
配置操作
创建一个deploy-nginx.yaml,内容如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
namespace: dev
spec:
replicas: 3
selector:
? matchLabels:
? ? run: nginx
template:
? metadata:
? ? labels:
? ? ? run: nginx
? spec:
? ? containers:
? ? - image: nginx:latest
? ? ? name: nginx
? ? ? ports:
? ? ? - containerPort: 80
? ? ? ? protocol: TCP
然后就可以执行对应的创建和删除命令了:
创建:kubectl create -f deploy-nginx.yaml
删除:kubectl delete -f deploy-nginx.yaml
|