一、 环境
5台服务器,3个master节点,2个工作节点。4台16g,1台4g。
kubernetes版本v1.16.4, docker 版本 v18.09.9
二、 概念
- docker镜像是什么?
docker容器可以看做是linux服务器的“进程”,或者看做是“沙盒”,是与外界进行隔离的。隔离主要是由linux Namespace, Cgroups, rootfs三个组件实现的隔离。 - kubernetes(k8s)是什么?pod、service、deployment的关系?
k8s是进行docker容器编排工作。
容器之间的紧密合作出现了pod,希望一次可以起多个实例,就有了deployment多实例管理对象。而有了一组相同的pod之后,我们还需要有一个固定的ip来访问,于是机有了service。
三、 基本操作
了解了以上概念之后,再开始做。
1. 创建 yaml 文件
pod yaml 模板
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: research
name: research-deployment
name: research-pod
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: research
template:
metadata:
labels:
app: research
spec:
containers:
- image: 192.168.130.129:5000/tomcat:latest
imagePullPolicy: Always
name: tomcat
ports:
- containerPort: 8080
name: tomcat-port
- image: 192.168.130.129:5000/hiup/hiup-research-web:latest
imagePullPolicy: IfNotPresent
name: research-web
ports:
- containerPort: 9077
name: web-port
volumeMounts:
- mountPath: /logs
name: logs-volume
volumes:
- hostPath:
path: /home/hiup/research/logs
name: logs-volume
service yaml 模板
apiVersion: v1
kind: Service
metadata:
labels:
app: research
name: research-service
namespace: default
spec:
ports:
- name: tomcat-port
nodePort: 30081
port: 8080
- name: web-port
nodePort: 30077
port: 9077
selector:
app: research
type: NodePort
找一台工作节点服务器,创建 **.yaml 文件。我文件位置和yaml 如下,名字随便起:
2. 执行k8s 命令
kubectl create -f research-pod-final-yaml
kubectl create -f research-svc-final-yaml
kubectl get pods
kubectl get svc
在浏览器输入你项目的地址,访问成功。
http://192.168.120.163:30081/static/CR/webHtml/login.html
三、 遇到的问题
- 获取pod中的日志,可通过设置 volume(数据卷)的方式,将日志文件同步到宿主机上。
- yaml 编写问题,因为差一个空格可能就出现错误。通过在线properties 转 yaml 方式解决。
在线 properties 和 yaml 互转网址:https://www.toyaml.com/index.html