用 Rancher 搭建了 k8s 集群,架构
,定义了
Pod
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.0
ports:
- containerPort: 80
Service
kind: Service
apiVersion: v1
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 9898
targetPort: 80
主机都是在阿里云上的,发现 Service 的 ip 也是虚拟的 ip,如何从外部固定入口访问,看网上资料是要定义 ingress
1
hly9469 2019-01-13 22:05:46 +08:00 via iPhone
nodeport
|
2
elons 2019-01-13 22:20:51 +08:00
通过节点端口访问啊
|
3
a663 2019-01-13 22:30:12 +08:00 via Android
Ingress
|
4
kidlj 2019-01-13 22:36:48 +08:00 via iPhone
- pod: hostNetwork or hostPort
- service: NodePort or loadbalancer(公有云环境) - ingress |
5
tinybaby365 2019-01-13 23:06:23 +08:00
通过 NodePort 访问,你可以开发一个 Service controller,利用阿里云的 API,支持 LoadBalancer 类型的 Service
|
6
AltairT 2019-01-14 00:03:46 +08:00 via iPhone
service 和负载均衡啊,话说不如直接用阿里云的容器服务,省事很多。日志,监控啥的集成都会很方便。
|
7
salamanderMH OP @kidlj
ingress 的例子是这样 ``` apiVersion: extensions/v1beta1 kind: Ingress metadata: name: influxdb spec: rules: - host: influxdb.kube.example.com http: paths: - backend: serviceName: influxdb servicePort: 8086 ``` 又要定义个 host |
8
julyclyde 2019-01-15 15:17:31 +08:00
通过 ingress 是正规途径
或者 loadbalancer 模式的 service 也可以,但需要一个 loadbalancer plugin nodeport 模式(其实 loadbalancer 模式也基于 nodeport )感觉设计上有问题,让所有 node 都开放同一个 port,人为把 port 逼成了紧俏资源 |