kubernetes 简单操作deployment,servic

2020-04-30  本文已影响0人  TryCatch菌

搭建的基础

搭建k8s的博文:
CentOS7安装kubernetesv1.16.7
docker镜像博文
CentOS7 从零开始搭建一个jdk+tomcat的docker环境


创建pod

首先通过deployment 创建pod,使用如下yaml文件用于设定Deployment,需要注意docker镜像必须在本地dokcer仓库中有或者能从镜像仓库拉取到,注意不要有空行,table的缩进。这里的docker镜像是上面博文步骤自己先的一个简单的镜像
准备deployment.yaml文件

apiVersion: apps/v1 #apiVersion是当前配置格式的版本
kind: Deployment #kind是要创建的资源类型
metadata:  #metadata是该资源的元数据,name是必须的元数据项
  #指定deployment的名称
  name: demo-deployment
  labels:
    app: ecs-demo  #标签
spec:
  #期望创建3个实例(3个pod)
  replicas: 3
  selector: # .spec.selector 必须匹配 .spec.template.metadata.labels,否则它将被API拒绝。如果 .spec.selector 没有被指定, .spec.selector.matchLabels 默认是 .spec.template.metadata.labels
    #选择label:app=ecs-demo的pod来创建实例
    matchLabels:   #metadata定义Pod的元数据,至少要顶一个label,label的key和value可以任意指定
      app: ecs-demo
  template:
    metadata:
      labels:
        app: ecs-demo
    spec:
      containers:
      - name: ecs-demo
        image: wangzhh/login_demo:20200429   # docker imange地址  REPOSITORY:TAG
        ports:
        - containerPort: 8080 #暴露给service的地址
        readinessProbe: #就绪探针
          httpGet:
            port: 8080
            path: /
          initialDelaySeconds: 50 # initialDelaySeconds这个参数 机器新能不好调大
          periodSeconds: 10
        livenessProbe:
          httpGet:
            path: /
            port: 8080
            scheme: HTTP
          initialDelaySeconds: 50 # initialDelaySeconds这个参数 机器新能不好调大
          periodSeconds: 10

在master节点执行命令

kubectl create -f deployment.yaml

如图所示为创建成功


image.png

查看一下创建的deployment

kubectl get deployment -o wide

看到运行的pod数量也在期望的范围内


image.png

查看pod运行在哪个node上

kubectl get pod -o wide
image.png

如果要删除pod,直接删除pod是不行的,因为我们是通过deployment创建的pod,里面定义了pod的数量,删除了会自动创建,所以我们要删除deployment,删除后查看可以发现

kubectl delete deployment <deploymentName>

或者

kubectl delete -f deployment.yaml 
image.png

创建service

一样通过yaml创建

apiVersion: v1 #apiVersion是当前配置格式的版本
kind: Service #kind是要创建的资源类型
metadata: #metadata是该资源的元数据,name是必须的元数据项
  name: demo-service
spec:
  selector: # selector 指明挑选那些 label 为 run: xx 的 Pod 作为 Service 的后端。
    app: ecs-demo
  ports:  #将Service 的 8080 端口映射到 Pod 的 8080 端口,使用 TCP 协议
  - protocol: TCP
    port: 8080
    targetPort: 8080
    nodePort: 30036  # nodePort,它指定节点上开放的端口值 端口范围只能是 30000-32767,如果不指定这个端口,系统将选择一个随机端口
  sessionAffinity: ClientIP # service内部实现session保持
  sessionAffinityConfig:
    clientIP:
        timeoutSeconds: 10800 # timeoutSeconds指的是session保持的时间,这个时间默认是10800秒,也就是三个小时
  type: NodePort # 暴露service的三种方式 NodePort,LoadBalancer 和 Ingress 

在master节点执行命令

kubectl create -f service.yaml

如下创建成功


image.png

浏览器访问一下


image.png

基础的k8s集群应用搭建完成了,后续再完善滚动升级,热扩容和nginx代理这些

上一篇下一篇

猜你喜欢

热点阅读