# 镜像部署一个应用
kubectl run mynginx_01 --image=nginx -r=3
# 把 mynginx01 部署3份
[root@guanzc-130 ~]# kubectl scale deployment/mynginx01 --replicas=3
[root@guanzc-130 ~]# kubectl get all
NAME READY STATUS RESTARTS AGE
pod/mynginx01-7bd4cdc666-lf7zk 1/1 Running 0 2m16s
pod/mynginx01-7bd4cdc666-mdqvx 1/1 Running 0 33m
pod/mynginx01-7bd4cdc666-nlr77 1/1 Running 0 2m16s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 6h36m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/mynginx01 3/3 3 3 33m
NAME DESIRED CURRENT READY AGE
replicaset.apps/mynginx01-7bd4cdc666 3 3 3 33m
[root@guanzc-130 ~]#
扩容的是pod。pod是 k8s 服务的容器组
,由多个容器组成,k8s里最小单元,类似于docker 里continer, pod 由一个或多个cotainer 组成
必须字段:
name
和 namespace
,如果 namespace
为空,则默认值为 default
.yaml
格式的文件以nginx 为例:
apiVersion: apps/v1 #与k8s集群版本有关,使用 kubectl api-versions 即可查看当前集群支持的版本
kind: Deployment #该配置的类型,我们使用的是 Deployment
metadata: #译名为元数据,即 Deployment 的一些基本属性和信息
name: nginx-deployment #Deployment 的名称
labels: #标签,可以灵活定位一个或多个资源,其中key和value均可自定义,可以定义多组,目前不需要理解
app: nginx #为该Deployment设置key为app,value为nginx的标签
spec: #这是关于该Deployment的描述,可以理解为你期待该Deployment在k8s中如何使用
replicas: 1 #使用该Deployment创建一个应用程序实例
selector: #标签选择器,与上面的标签共同作用,目前不需要理解
matchLabels: #选择包含标签app:nginx的资源
app: nginx
template: #这是选择或创建的Pod的模板
metadata: #Pod的元数据
labels: #Pod的标签,上面的selector即选择包含标签app:nginx的Pod
app: nginx
spec: #期望Pod实现的功能(即在pod中部署)
containers: #生成container,与docker中的container是同一种
- name: nginx #container的名称
image: nginx:1.7.9 #使用镜像nginx:1.7.9创建container,该container默认80端口可访问
ngix01.yaml
kubectl run my-nginx01 --image=nginx --dry-run -o yaml
预生成,在进行修改# 创建(更新)
kubectl apply -f nginx01.yaml
# 只能创建一次
kubectl create -f nginx01.yaml
#查看
kubectl get deploy
# 应用删除
kubectl delete -f nginx01.yaml
#替换对象
kubectl replace -f nginx01.yaml