K8s创建Service与创建Deployment
创建Service
配置myName-service.yaml
:
apiVersion: v1
# 类型为Service
kind: Service
# 元数据
metadata:
# Service的名称
name: myName
# 标签key-value键值对
labels:
app: myName
# 声明
spec:
# 端口
ports:
# Service在集群内部暴露的端口
- port: 80
# 内部端口映射到Pod暴露出的端口
targetPort: 80
# 端口名称(标识类型)
name: http
# 对外暴露的端口号。不指定,则随机生成
nodePort: 30000
# 选择器
selector:
# 指定label中app=myName的Pod都归属于当前Service
app: myName
# Service类型,NodePort类型可以对外暴露。
# 不指定的话,则默认为ClusterIP,只能集群内部访问
type: NodePort
创建Deployment
配置myName-deploy.yaml
:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: myName
# 决定了Pod的显示名称
name: myName
spec:
# 副本个数。若为3,k8s会保证pod个数为3个,少了就增加,多了就删除
replicas: 1
template:
metadata:
labels:
# 标识Pod,在Service中的selector指定匹配label为app:myName
app: myName
name: myName
spec:
# Pod中包含的容器
containers:
# 项目容器
- name: myName
imagePullPolicy: IfNotPresent
image: $image
env:
- name: PRODUCTION_NGINX
value: "1"
- name: PRODUCTION_SETTINGS
value: "1"
ports:
# 容器暴露的端口
- containerPort: 8000
name: http-8000
volumeMounts:
- name: nginx-config
mountPath: /mnt/nginx
- name: static
mountPath: /mnt/static
# Nginx容器
- name: nginx
image: nginx:1.16
ports:
- containerPort: 80
name: http
volumeMounts:
- name: nginx-config
mountPath: /etc/nginx/conf.d
- name: static
mountPath: /usr/share/nginx/html
volumes:
- name: static
emptyDir: {}
- name: nginx-config
emptyDir: {}