搭建的基础
- Linux: CentOS-7-x86_64-DVD-1810.iso
- Docker: docker-ce-18.03.1.ce
- kubernetes: kubernetes v1.16.7
搭建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代理这些
网友评论