我有一个单节点k8s集群。我有两个 namespace ,分别称为n1
和n2
。我想在相同的端口,但在不同的命名空间中部署相同的镜像。
我该怎么做呢?
命名空间yamls:
apiVersion: v1
kind: Namespace
metadata:
name: n1
and
apiVersion: v1
kind: Namespace
metadata:
name: n2
服务Yamls:
apiVersion: v1
kind: Service
metadata:
name: my-app-n1
namespace: n1
labels:
app: my-app-n1
spec:
type: LoadBalancer
ports:
- name: http
port: 80
targetPort: http
protocol: TCP
selector:
app: my-app-n1
and
apiVersion: v1
kind: Service
metadata:
name: my-app-n2
namespace: n2
labels:
app: my-app-n2
spec:
type: LoadBalancer
ports:
- name: http
port: 80
targetPort: http
protocol: TCP
selector:
app: my-app-n2
部署Yamls:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-n1
labels:
app: my-app-n1
spec:
replicas: 1
selector:
matchLabels:
app: my-app-n1
template:
metadata:
labels:
app: my-app-n1
spec:
containers:
- name: waiter
image: waiter:v1
ports:
- containerPort: 80
and
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-n2
labels:
app: my-app-n2
spec:
replicas: 1
selector:
matchLabels:
app: my-app-n2
template:
metadata:
labels:
app: my-app-n2
spec:
containers:
- name: waiter
image: waiter:v1
ports:
- containerPort: 80
waiter:v1
与此仓库对应:https://hub.docker.com/r/adamgardnerdt/waiter我肯定可以做到这一点,因为命名空间应该代表不同的环境?例如。非产品与产品因此,可以肯定地我可以将其相同地部署到两个不同的“环境”(又称为“命名空间”)中吗?
最佳答案
对于Service,您已经指定了 namespace ,这是正确的。
对于部署,还应指定命名空间,否则它们将进入默认命名空间。
示例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-n1
namespace: n1
labels:
app: my-app-n1
spec:
replicas: 1
selector:
matchLabels:
app: my-app-n1
template:
metadata:
labels:
app: my-app-n1
spec:
containers:
- name: waiter
image: waiter:v1
ports:
- containerPort: 80
关于kubernetes - 将相同的镜像部署到两个不同的 namespace 相同的端口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56986465/