yaml格式的service定义文件完整内容
apiVersion: v1
kind: Service
matadata: #元数据
name: string #service的名称
namespace: string #命名空间
labels: #自定义标签属性列表
- name: string
annotations: #自定义注解属性列表
- name: string
spec: #详细描述
selector: [] #label selector配置,将选择具有label标签的Pod作为管理 范围
type: string #service的类型,指定service的访问方式,默认为clusterIp
clusterIP: string #虚拟服务地址
sessionAffinity: string #是否支持session
ports: #service需要暴露的端口列表
- name: string #端口名称
protocol: string #端口协议,支持TCP和UDP,默认TCP
port: int #服务监听的端口号
targetPort: int #需要转发到后端Pod的端口号
nodePort: int #当type = NodePort时,指定映射到物理机的端口号
status: #当spce.type=LoadBalancer时,设置外部负载均衡器的地址
loadBalancer: #外部负载均衡器
ingress: #外部负载均衡器
ip: string #外部负载均衡器的Ip地址值
hostname: string #外部负载均衡器的主机名
外部服务service
将一个外部服务(数据库等)作为后端服务进行连接
---
kind: Service
apiVersion: v1
metadata:
name: mysql-test
spec:
ports:
- protocol: TCP
port: 3306
targetPort: 3306
---
kind: Endpoints
apiVersion: v1
metadata:
name: mysql-test
subsets:
- addresses:
- ip: 10.24.2.191 //只能IP,不能是域名
ports:
- port: 3306
验证,在pod里面telnet 域名和端口
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: xintuo-jenkins-1070941479
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/rewrite-target: /xintuo
spec:
rules:
- host: ci.hundsun.com
http:
paths:
- path: /xintuo
backend:
serviceName: xintuo-jenkins-1070941479-web
servicePort: 8080
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: xintuo-jenkins-1070941479
labels:
pv: xintuo-jenkins-1070941479
spec:
capacity:
storage: 200Gi
accessModes:
- ReadWriteMany
nfs:
path: /data/JENKINS_HOME/xintuo
server: 192.168.102.234
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: xintuo-jenkins-1070941479
labels:
pv: xintuo-jenkins-1070941479
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 200Gi
selector:
matchLabels:
pv: xintuo-jenkins-1070941479
---
#Jenkins的web服务和slave服务
apiVersion: v1
kind: Service
metadata:
name: xintuo-jenkins-1070941479-web
labels:
name: jenkins-1070941479
spec:
ports:
- name: web
port: 8080
selector:
name: jenkins-1070941479
---
apiVersion: v1
kind: Service
metadata:
name: xintuo-jenkins-1070941479-slave
labels:
name: jenkins-1070941479
spec:
type: NodePort
ports:
- name: slave
port: 38830
nodePort: 38830
selector:
name: jenkins-1070941479
---
#Jenkins的容器
apiVersion: apps/v1
kind: Deployment
metadata:
name: xintuo-jenkins-1070941479
spec:
replicas: 1
selector:
matchLabels:
name: "jenkins-1070941479"
template:
metadata:
labels:
"name": "jenkins-1070941479"
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: "name"
operator: In
values:
- "jenkins-1070941479"
topologyKey: kubernetes.io/hostname
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- ci-k8s-worker04
containers:
- name: jenkins
image: registry.hundsun.com/jenkins/jenkins-common:centos7.6_ver2.153
imagePullPolicy: IfNotPresent
lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c", "mv /opt/apache-tomcat-9.0.0.M9/webapps/jenkins.war /opt/apache-tomcat-9.0.0.M9/webapps/xintuo.war"]
resources:
requests:
cpu: 0
memory: 0
limits:
cpu: 0
memory: 0
ports:
- containerPort: 8080
name: web
- containerPort: 38830
name: slave
volumeMounts:
- name: data
mountPath: /var/jenkins
- name: timezone
mountPath: /etc/localtime
readOnly: true
volumes:
- name: data
persistentVolumeClaim:
claimName: xintuo-jenkins-1070941479
- name: timezone
hostPath:
path: /etc/localtime