搭建的基础

  • Linux: CentOS-7-x86_64-DVD-1810.iso
  • Docker: docker-ce-18.03.1.ce
  • kubernetes: kubernetes v1.16.7

docker镜像博文

CentOS7 从零开始搭建一个jdk+tomcat的docker环境

搭建k8s的博文

CentOS7安装kubernetesv1.16.7


创建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

如图所示为创建成功

1896bea59ddebe30696dd887a701b7d7.png

查看一下创建的deployment

kubectl get deployment -o wide

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

da02d7bea7970113502853258ff8973b.png

查看pod运行在哪个node上

kubectl get pod -o wide
c7cd6af3a7680356f63bcf73e8ce401f.png

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

kubectl delete deployment 

或者

kubectl delete -f deployment.yaml 
7348766cf969d27cf491e9829b5ac4cc.png
创建service

一样通过yaml创建

apiVersion: v1 #apiVersion是当前配置格式的版本kind: Service #kind是要创建的资源类型metadata: #metadata是该资源的元数据,name是必须的元数据项  name: demo-servicespec:  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

如下创建成功

7b823379bc6f595d1c2f066ce2b4483e.png

浏览器访问一下

59d71f464ed3a5a7d54c599585f28108.png

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

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐