使pod DNS名称可在Kubernetes集群中解析

时间:2018-01-15 10:44:13

标签: kubernetes kube-dns

设置

名为frontend的部署的pod通过名为frontend的服务公开。

<div id="jumbotron" class="jumbotron">
</div>


<script>
    ReactDOM.render(React.createElement(Renderings.default.App, { id: 'testApp' }), document.getElementById('jumbotron'))
</script>

问题

通过busybox查询服务前端的DNS名称将返回服务IP地址。 通过busybox查询pod前端-b48b88789-dcxs6的DNS名称无法解析。

NAME                          READY     STATUS    RESTARTS   AGE
po/frontend-b48b88789-dcxs6   1/1       Running   0          2h

NAME              DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deploy/frontend   1         1         1            1           2h

NAME           TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
svc/frontend   ClusterIP   10.106.243.125   <none>        80/TCP    2h

问题

如何通过Kubernetes集群DNS系统解析pod?

来源我一直在寻找答案

1 个答案:

答案 0 :(得分:1)

我认为,如果你确实需要这个,那么你真正感兴趣的是StatefulSet,它提供了一种静态的方式来引用由它调整的pod。使用StatefulSet,您的pod将具有可预测的名称,如Private m_value As Variant Private Sub Class_Initialize() Set m_value = Nothing End Sub Public Property Get Value() As Integer If Not HasValue Then Err.Raise "Limit doesn't have any number" End If Value = CInt(m_value) End Property Public Property Let Value(ByVal vNewValue As Integer) m_value = vNewValue End Property Public Property Get HasValue() As Boolean HasValue = IsNumeric(m_value) End Property Sub test() Dim l As Limit Set l = New Limit On Error Resume Next Dim v As Integer v = l.Value ' Error here, limit doesn't have value yet On Error GoTo 0 l.Value = 100 If l.HasValue Then 'Do thing 1 Else l.Value = Application.InputBox("Please set a limit value", Type:=1) End If End Sub 等,您将能够将其解析为ie。 myapp-0(其中myapp-1是州政集团的“管理”服务)

可预测的名称允许更容易地配置需要形成集群的事物,并且您可以获得其他收益,例如顺序扩展,持久存储的映射或创建始终命中给定pod的服务的能力(如在pod数N中) StatefulSet意味着您可以创建始终指向myapp-0.mysvc窗格的mysvc服务。