k8s创建资源的两种方式+扩容缩容+升级回滚

用命令行的方式创建

创建Pod控制器,deployment(到k8s:1.18版本,此方式已变为创建Pod资源)

[root@master ~]# kubectl run web --image=nginx --replicas=5

查看控制器情况

[root@master ~]# kubectl get deployments
NAME   READY   UP-TO-DATE   AVAILABLE   AGE
web    5/5     5            5           4m20s

查看资源详细信息

[root@master ~]# kubectl describe deployments. web

PS:查看某种资源对象,没有指定名称空间,默认是在default名称空间。可以加上-n选项,查看指定名称空间的资源

注意:直接运行创建的Deployment资源对象,是经常使用的一个控制器资源类型,除了deployment,还有rc,rs等Pod控制器,Deployment是一个高级的Pod控制器。

创建Service资源类型

[root@master ~]# kubectl expose deployment web --name=web-svc --port=80 --type=NodePort

查看Service资源信息

[root@master ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
web-svc      NodePort    10.96.10.223   <none>        80:32342/TCP   7s

查看Service资源详细信息

[root@master ~]# kubectl describe svc web-svc

PS: 如果想要外网能够访问服务,可以暴露deployment资源,得到service资源,但svc资源的类型必须为NodePort(大小写必须严格按照要求)

服务的扩容与缩容
扩容

[root@master ~]# kubectl scale deployment web --replicas=8
[root@master ~]# kubectl get deployments.
NAME   READY   UP-TO-DATE   AVAILABLE   AGE
web    8/8     8            8           13m

缩容

[root@master ~]# kubectl edit deployments. web       //修改spec字段下面的replicas
[root@master ~]# kubectl get deployments.
NAME   READY   UP-TO-DATE   AVAILABLE   AGE
web    3/3     3            3           19m

服务的升级与回滚
升级

[root@master ~]# kubectl set image deployment web web=nginx:1.15
[root@master ~]# kubectl edit deployments. web

回滚

[root@master ~]# kubectl rollout undo deployment web
[root@master ~]# kubectl edit deployments. web

常用命令集合

kubectl run                #创建一个deployment或job来管理创建的容器
kubectl get                #显示一个或多个资源,可以使用标签过滤,默认查看当前名称空间的资源
kubectl expose         #将一个资源暴露为一个新的kubernetes的service资源,资源包括pod (po), service (svc), replicationcontroller(rc),deployment(deploy), replicaset (rs
)kubectl describe     #显示特定资源或资源组的详细信息
kubectl scale           #可以对Deployment, ReplicaSet, ReplicationController, 或者StatefulSet设置新的值,可以指定一个或多个先决条件
kubectl set              #更改现有的应用程序资源kubectl rollout   #资源回滚管理

配置清单(yml、yaml)

常见Yaml文件写法:以及字段的作用
apiVersion: api版本信息
kind:资源对象的类别
metadata: 元数据名称字段必写。
spec:用户期望的状态。
status:资源现在处于什么样的状态。

可以使用kubectl explain 命令查看我们要写的资源对象的yaml文件怎么写。比如查看deployment资源的话就可以写成:

[root@master ~]# kubectl explain deploy

Deployment

vim deployment.yaml

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: web2
spec:
  replicas: 4
  template:
    metadata:
      labels:
        app: web2
    spec:
      containers:
      - name: web2
        image: nginx

Service

vim service.yaml

kind: Service
apiVersion: v1
metadata:
name: web-svc
spec:
selector:
  app: web2              //这里一定要和deployment的labels下的一样
ports:
-  protocol: TCP
   port: 80
   targetPort: 80

使用相同的标签和标签选择器内容,使两个资源对象相互关联。

PS: 创建的Service资源对象,默认的type为ClusterIP,意味着集群内任意节点都可访问。它的作用是为后端真正提供服务的Pod提供一个统一的访问接口。如果想要外网能否访问服务,应该把type改为NodePort.

kind: Service
apiVersion: v1
metadata:
  name: web-svc
spec:
  type: NodePort                     // 指定类型,让外网访问
  selector:
    app: web2                          // 这里一定要和deployment的labels下的一样
  ports:
  -  protocol: TCP
     port: 80
     targetPort: 80
     nodePort: 30033               // 指定集群映射端口,范围是30000-32767

使用kubectl apply 命令运行yaml文件
[root@master ~]# kubectl apply -f deployment.yaml
[root@master ~]# kubectl apply -f service.yaml

猜你喜欢

转载自blog.csdn.net/hjyhjy0/article/details/109448993