在本地新建一个文件叫 redis.yaml 内容如下
apiVersion: apps/v1
kind: Deployment #controll的类型
metadata:
name: redis-master #当前命名空间下Deployment唯一的Name
spec:
replicas: 1 #Deployment下所管理的Pod数量
selector:
matchLabels:
app: redis-master #唯一标识
template:
metadata:
labels:
app: redis-master
spec: #Pod配置节点
containers: #Pod 所包含的Container,是一个数组(Pod可以包含多个Container,建议做法: 一个Pod只包含一个Container)
- name: redis #Container 名称
image: redis #指定镜像
ports:
- containerPort: 6379 #Container 暴露的端口,用于Pod内部访问
---
apiVersion: v1
kind: Service #Service(为容器提供统一的访问入口,集群内部、外网访问)
metadata:
name: redis-master
labels:
name: redis-master
spec:
type: NodePort #指定成NodePort这样可以通过 节点的IP来访问
ports:
- port: 6379
nodePort: 30008 #暴露在node节点的端口
selector:
app: redis-master # 通过selctor关联到了pod
然后使用命令 kubectl apply -f redis.yaml
可以看到
deployment.apps/redis-master created
service/redis-master created
成功后我们可以使用 kubectl get pods
可以看到
redis-master-7fc4fffc59-2v28j 1/1 Running 0 29s
成功后我们可以使用 kubectl get services
redis-master NodePort 10.43.56.132 <none> 6379:30008/TCP 35s
使用telnet验证一下端口
telnet yourNodeIp 30008
(这个ip是你自己机子节点的IP。windows下面可以直接用localhost 或者自己的局域网的IP)
kubectl create deployment redis --image=redis
kubectl expose deploy redis --port=6379
部署一个可以被访问的服务 需要两个东西 deployment 和 service