AWS + Kubeadm(k8s 1.4)我尝试通过以下自述文件进行操作:
https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx
但这似乎不起作用。我懒洋洋地问了一下,看来Yamls已经过时了,我必须这样修改
首先,我使用git上的yaml部署了default-http-backend:
接下来,我必须对ingress-RC进行修改:
(请注意,更改以获取路径以healthz
反映出来default-backend
,以及10254
根据松弛情况显然需要更改的端口)
一切运行正常,
kubectl get pods
我看到了入口控制器,
kubectl get rc
我看到了1 1 1 for ingress-rc
然后我部署简单的echoheaders应用程序(根据git自述文件):
kubectl run echoheaders --image=gcr.io/google_containers/echoserver:1.4 --replicas=1 --port=8080
kubectl expose deployment echoheaders --port=80 --target-port=8080 --name=echoheaders-x
Run Code Online (Sandbox Code Playgroud)
接下来,我创建了一个简单的入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
spec:
backend:
serviceName: echoheaders-x
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
双方get ing
并describe ing
给出了是一个好兆头:
Name: test-ingress
Namespace: default
Address: 172.30.2.86 <---this is my private ip
Default backend: echoheaders-x:80 (10.38.0.2:8080)
Rules:
Host Path Backends
---- ---- --------
* * echoheaders-x:80 (10.38.0.2:8080)
Run Code Online (Sandbox Code Playgroud)
但是尝试去公共ip节点似乎不起作用,因为我越来越无法访问服务器。
不幸的是,目前尚不支持将入口控制器与使用kubeadm设置的Kubernetes集群一起使用。
原因是入口控制器指定了一个hostPort以便在节点的公共IP上可用,但是kubeadm创建的集群使用了目前不支持hostPort的CNI网络插件。
您可能会幸运地选择另一种方式来设置不使用CNI 的群集。
或者,您可以编辑ingress-rc.yaml以在“ spec:”部分下声明“ hostNetwork:true”。指定hostNetwork将使容器使用主机的网络名称空间运行,从而使它们可以访问主机的网络接口,路由表和iptables规则。可以将其视为带有选项--network =“ host”的“ docker run”。
归档时间: |
|
查看次数: |
3030 次 |
最近记录: |