孙宗芸 發表於 2026-5-6 06:41:28

Kubernetes K8S之Ingress详解与示例

<p>&nbsp;</p>
<blockquote>
<p>K8S之Ingress概述与说明,并详解Ingress常用示例</p>
</blockquote>
<p>&nbsp;</p>
<h1 id="主机配置规划">主机配置规划</h1>
<table>
<thead>
<tr><th>服务器名称(hostname)</th><th>系统版本</th><th>配置</th><th>内网IP</th><th>外网IP(模拟)</th></tr>
</thead>
<tbody>
<tr>
<td>k8s-master</td>
<td>CentOS7.7</td>
<td>2C/4G/20G</td>
<td>172.16.1.110</td>
<td>10.0.0.110</td>
</tr>
<tr>
<td>k8s-node01</td>
<td>CentOS7.7</td>
<td>2C/4G/20G</td>
<td>172.16.1.111</td>
<td>10.0.0.111</td>
</tr>
<tr>
<td>k8s-node02</td>
<td>CentOS7.7</td>
<td>2C/4G/20G</td>
<td>172.16.1.112</td>
<td>10.0.0.112</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h1 id="Ingress概述">Ingress概述</h1>
<p>Ingress 是对集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP和HTTPS。</p>
<p>Ingress 可以提供负载均衡、SSL 和基于名称的虚拟托管。</p>
<p><span style="color: rgba(255, 0, 0, 1)">必须具有 ingress 控制器【例如 ingress-nginx】才能满足 Ingress 的要求。仅创建 Ingress 资源无效。</span></p>
<h2 id="Ingress-是什么">Ingress 是什么</h2>
<p><span style="color: rgba(255, 0, 0, 1)">Ingress 公开了从集群外部到集群内 services 的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源上定义的规则控制。</span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)"> internet
</span><span style="color: rgba(0, 128, 128, 1)">2</span>      |
<span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 0, 0, 1)">[ Ingress ]
</span><span style="color: rgba(0, 128, 128, 1)">4</span> --|-----|--
<span style="color: rgba(0, 128, 128, 1)">5</span> [ Services ]</pre>
</div>
<p>&nbsp;</p>
<p>可以将 Ingress 配置为<span style="color: rgba(255, 0, 0, 1)">提供服务外部可访问的 URL、负载均衡流量、 SSL / TLS,以及提供基于名称的虚拟主机</span>。Ingress 控制器 通常负责通过负载均衡器来实现 Ingress,尽管它也可以配置边缘路由器或其他前端来帮助处理流量。</p>
<p><span style="color: rgba(255, 0, 0, 1)">Ingress 不会公开任意端口或协议。若将 HTTP 和 HTTPS 以外的服务公开到 Internet 时,通常使用 Service.Type=NodePort 或者 Service.Type=LoadBalancer 类型的服务。</span></p>
<p>以Nginx Ingress为例,图如下</p>
<p><img src="https://img2020.cnblogs.com/blog/1395193/202009/1395193-20200923212751953-1504280368.png"></p>
<p>&nbsp;</p>
<p><img src="https://img2020.cnblogs.com/blog/1395193/202009/1395193-20200923212805642-433152881.png"></p>
<p>&nbsp;</p>
<h1 id="Ingress示例">Ingress示例</h1>
<h2 id="架构图">架构图</h2>
<p><img src="https://img2020.cnblogs.com/blog/1395193/202009/1395193-20200923212820372-429939181.png"></p>
<p>&nbsp;</p>
<h2 id="部署Ingress-Nginx">部署Ingress-Nginx</h2>
<p>该Nginx是经过改造的,而不是传统的Nginx。</p>
<p>Ingress-Nginx官网地址</p>
<div class="cnblogs_code">
<pre>https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">kubernetes.github.io/ingress-nginx/</span></pre>
</div>
<p>&nbsp;</p>
<p>Ingress-Nginx GitHub地址</p>
<div class="cnblogs_code">
<pre>https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">github.com/kubernetes/ingress-nginx</span></pre>
</div>
<p>&nbsp;</p>
<p>本次下载版本:nginx-0.30.0</p>
<p><img src="https://img2020.cnblogs.com/blog/1395193/202009/1395193-20200923212905808-2085269317.png"></p>
<p>&nbsp;</p>
<p>镜像下载与重命名</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> docker pull registry.cn-beijing.aliyuncs.com/google_registry/nginx-ingress-controller:<span style="color: rgba(128, 0, 128, 1)">0.30</span>.<span style="color: rgba(128, 0, 128, 1)">0</span>
<span style="color: rgba(0, 128, 128, 1)">2</span> docker tag 89ccad40ce8e quay.io/kubernetes-ingress-controller/nginx-ingress-controller:<span style="color: rgba(128, 0, 128, 1)">0.30</span>.<span style="color: rgba(128, 0, 128, 1)">0</span>
<span style="color: rgba(0, 128, 128, 1)">3</span> docker rmiregistry.cn-beijing.aliyuncs.com/google_registry/nginx-ingress-controller:<span style="color: rgba(128, 0, 128, 1)">0.30</span>.<span style="color: rgba(128, 0, 128, 1)">0</span></pre>
</div>
<p>&nbsp;</p>
<p>ingress-nginx的yaml文件修改后并启动</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 0, 1)"># 当前目录
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> # <span style="color: rgba(0, 0, 255, 1)">pwd</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> /root/k8s_practice/<span style="color: rgba(0, 0, 0, 1)">ingress
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> # 获取NGINX: <span style="color: rgba(128, 0, 128, 1)">0.30</span>.<span style="color: rgba(128, 0, 128, 1)">0</span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span> # <span style="color: rgba(0, 0, 255, 1)">wget</span> https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">github.com/kubernetes/ingress-nginx/archive/nginx-0.30.0.tar.gz</span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span> # <span style="color: rgba(0, 0, 255, 1)">tar</span> xf nginx-<span style="color: rgba(128, 0, 128, 1)">0.30</span>.<span style="color: rgba(128, 0, 128, 1)">0</span>.<span style="color: rgba(0, 0, 255, 1)">tar</span><span style="color: rgba(0, 0, 0, 1)">.gz
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> # yaml文件在下载包中的位置:ingress-nginx-nginx-<span style="color: rgba(128, 0, 128, 1)">0.30</span>.<span style="color: rgba(128, 0, 128, 1)">0</span>/deploy/static/<span style="color: rgba(0, 0, 0, 1)">mandatory.yaml
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> # <span style="color: rgba(0, 0, 255, 1)">cp</span> -a ingress-nginx-nginx-<span style="color: rgba(128, 0, 128, 1)">0.30</span>.<span style="color: rgba(128, 0, 128, 1)">0</span>/deploy/static/mandatory.yaml ./
<span style="color: rgba(0, 128, 128, 1)"> 9</span> #
</span><span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)"># yaml文件配置修改
</span><span style="color: rgba(0, 128, 128, 1)">11</span> # vim mandatory.yaml
</span><span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)">………………
</span><span style="color: rgba(0, 128, 128, 1)">13</span> apiVersion: apps/<span style="color: rgba(0, 0, 0, 1)">v1
</span><span style="color: rgba(0, 128, 128, 1)">14</span> <span style="color: rgba(0, 0, 0, 1)">kind: DaemonSet   # 从Deployment改为DaemonSet
</span><span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)">metadata:
</span><span style="color: rgba(0, 128, 128, 1)">16</span>   name: nginx-ingress-<span style="color: rgba(0, 0, 0, 1)">controller
</span><span style="color: rgba(0, 128, 128, 1)">17</span>   namespace: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
</span><span style="color: rgba(0, 128, 128, 1)">18</span> <span style="color: rgba(0, 0, 0, 1)">labels:
</span><span style="color: rgba(0, 128, 128, 1)">19</span>   app.kubernetes.io/name: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
</span><span style="color: rgba(0, 128, 128, 1)">20</span>   app.kubernetes.io/part-of: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
</span><span style="color: rgba(0, 128, 128, 1)">21</span> <span style="color: rgba(0, 0, 0, 1)">spec:
</span><span style="color: rgba(0, 128, 128, 1)">22</span>   #replicas: <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">   # 注释掉
</span><span style="color: rgba(0, 128, 128, 1)">23</span> <span style="color: rgba(0, 0, 0, 1)">………………
</span><span style="color: rgba(0, 128, 128, 1)">24</span> <span style="color: rgba(0, 0, 0, 1)">      nodeSelector:
</span><span style="color: rgba(0, 128, 128, 1)">25</span>         kubernetes.io/<span style="color: rgba(0, 0, 255, 1)">hostname</span>: k8s-<span style="color: rgba(0, 0, 0, 1)">master   # 修改处
</span><span style="color: rgba(0, 128, 128, 1)">26</span> <span style="color: rgba(0, 0, 0, 1)">      # 如下几行为新加行作用【允许在master节点运行】
</span><span style="color: rgba(0, 128, 128, 1)">27</span> <span style="color: rgba(0, 0, 0, 1)">      tolerations:
</span><span style="color: rgba(0, 128, 128, 1)">28</span>       - key: node-role.kubernetes.io/<span style="color: rgba(0, 0, 0, 1)">master
</span><span style="color: rgba(0, 128, 128, 1)">29</span> <span style="color: rgba(0, 0, 0, 1)">      effect: NoSchedule
</span><span style="color: rgba(0, 128, 128, 1)">30</span> <span style="color: rgba(0, 0, 0, 1)">………………
</span><span style="color: rgba(0, 128, 128, 1)">31</span> <span style="color: rgba(0, 0, 0, 1)">          ports:
</span><span style="color: rgba(0, 128, 128, 1)">32</span>             -<span style="color: rgba(0, 0, 0, 1)"> name: http
</span><span style="color: rgba(0, 128, 128, 1)">33</span>               containerPort: <span style="color: rgba(128, 0, 128, 1)">80</span>
<span style="color: rgba(0, 128, 128, 1)">34</span>               hostPort: <span style="color: rgba(128, 0, 128, 1)">80</span><span style="color: rgba(0, 0, 0, 1)">    # 添加处【可在宿主机通过该端口访问Pod】
</span><span style="color: rgba(0, 128, 128, 1)">35</span> <span style="color: rgba(0, 0, 0, 1)">            protocol: TCP
</span><span style="color: rgba(0, 128, 128, 1)">36</span>             -<span style="color: rgba(0, 0, 0, 1)"> name: https
</span><span style="color: rgba(0, 128, 128, 1)">37</span>               containerPort: <span style="color: rgba(128, 0, 128, 1)">443</span>
<span style="color: rgba(0, 128, 128, 1)">38</span>               hostPort: <span style="color: rgba(128, 0, 128, 1)">443</span><span style="color: rgba(0, 0, 0, 1)">   # 添加处【可在宿主机通过该端口访问Pod】
</span><span style="color: rgba(0, 128, 128, 1)">39</span> <span style="color: rgba(0, 0, 0, 1)">            protocol: TCP
</span><span style="color: rgba(0, 128, 128, 1)">40</span> <span style="color: rgba(0, 0, 0, 1)">………………
</span><span style="color: rgba(0, 128, 128, 1)">41</span> #
</span><span style="color: rgba(0, 128, 128, 1)">42</span> # kubectl apply -<span style="color: rgba(0, 0, 0, 1)">f mandatory.yaml
</span><span style="color: rgba(0, 128, 128, 1)">43</span> namespace/ingress-<span style="color: rgba(0, 0, 0, 1)">nginx created
</span><span style="color: rgba(0, 128, 128, 1)">44</span> configmap/nginx-<span style="color: rgba(0, 0, 0, 1)">configuration created
</span><span style="color: rgba(0, 128, 128, 1)">45</span> configmap/tcp-<span style="color: rgba(0, 0, 0, 1)">services created
</span><span style="color: rgba(0, 128, 128, 1)">46</span> configmap/udp-<span style="color: rgba(0, 0, 0, 1)">services created
</span><span style="color: rgba(0, 128, 128, 1)">47</span> serviceaccount/nginx-ingress-<span style="color: rgba(0, 0, 0, 1)">serviceaccount created
</span><span style="color: rgba(0, 128, 128, 1)">48</span> clusterrole.rbac.authorization.k8s.io/nginx-ingress-<span style="color: rgba(0, 0, 0, 1)">clusterrole created
</span><span style="color: rgba(0, 128, 128, 1)">49</span> role.rbac.authorization.k8s.io/nginx-ingress-<span style="color: rgba(0, 0, 0, 1)">role created
</span><span style="color: rgba(0, 128, 128, 1)">50</span> rolebinding.rbac.authorization.k8s.io/nginx-ingress-role-nisa-<span style="color: rgba(0, 0, 0, 1)">binding created
</span><span style="color: rgba(0, 128, 128, 1)">51</span> clusterrolebinding.rbac.authorization.k8s.io/nginx-ingress-clusterrole-nisa-<span style="color: rgba(0, 0, 0, 1)">binding created
</span><span style="color: rgba(0, 128, 128, 1)">52</span> daemonset.apps/nginx-ingress-<span style="color: rgba(0, 0, 0, 1)">controller created
</span><span style="color: rgba(0, 128, 128, 1)">53</span> limitrange/ingress-<span style="color: rgba(0, 0, 0, 1)">nginx created
</span><span style="color: rgba(0, 128, 128, 1)">54</span> #
</span><span style="color: rgba(0, 128, 128, 1)">55</span> # kubectl get ds -n ingress-nginx -<span style="color: rgba(0, 0, 0, 1)">o wide
</span><span style="color: rgba(0, 128, 128, 1)">56</span> NAME                     DESIRED   CURRENT   READY   UP-TO-<span style="color: rgba(0, 0, 0, 1)">DATE   AVAILABLE   NODE SELECTOR                     AGE   CONTAINERS               IMAGES                                                                  SELECTOR
</span><span style="color: rgba(0, 128, 128, 1)">57</span> nginx-ingress-controller   <span style="color: rgba(128, 0, 128, 1)">1</span>         <span style="color: rgba(128, 0, 128, 1)">1</span>         <span style="color: rgba(128, 0, 128, 1)">1</span>       <span style="color: rgba(128, 0, 128, 1)">1</span>            <span style="color: rgba(128, 0, 128, 1)">1</span>         kubernetes.io/<span style="color: rgba(0, 0, 255, 1)">hostname</span>=k8s-master   9m47s   nginx-ingress-controller   quay.io/kubernetes-ingress-controller/nginx-ingress-controller:<span style="color: rgba(128, 0, 128, 1)">0.30</span>.<span style="color: rgba(128, 0, 128, 1)">0</span>   app.kubernetes.io/name=ingress-nginx,app.kubernetes.io/part-of=ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
</span><span style="color: rgba(0, 128, 128, 1)">58</span> #
</span><span style="color: rgba(0, 128, 128, 1)">59</span> # kubectl get pod -n ingress-nginx -<span style="color: rgba(0, 0, 0, 1)">o wide
</span><span style="color: rgba(0, 128, 128, 1)">60</span> <span style="color: rgba(0, 0, 0, 1)">NAME                           READY   STATUS    RESTARTS   AGE   IP            NODE         NOMINATED NODE   READINESS GATES
</span><span style="color: rgba(0, 128, 128, 1)">61</span> nginx-ingress-controller-rrbh9   <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span>   Running   <span style="color: rgba(128, 0, 128, 1)">0</span>          9m55s   <span style="color: rgba(128, 0, 128, 1)">10.244</span>.<span style="color: rgba(128, 0, 128, 1)">0.46</span>   k8s-master   &lt;none&gt;         &lt;none&gt;</pre>
</div>
<p>&nbsp;</p>
<h2 id="deply-service1的yaml信息">deply_service1的yaml信息</h2>
<p>yaml文件</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> # <span style="color: rgba(0, 0, 255, 1)">pwd</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> /root/k8s_practice/<span style="color: rgba(0, 0, 0, 1)">ingress
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> # <span style="color: rgba(0, 0, 255, 1)">cat</span><span style="color: rgba(0, 0, 0, 1)"> deply_service1.yaml
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> apiVersion: apps/<span style="color: rgba(0, 0, 0, 1)">v1
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 0, 1)">kind: Deployment
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)">metadata:
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span>   name: myapp-<span style="color: rgba(0, 0, 0, 1)">deploy1
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 0, 1)">namespace: default
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 0, 1)">spec:
</span><span style="color: rgba(0, 128, 128, 1)">10</span>   replicas: <span style="color: rgba(128, 0, 128, 1)">3</span>
<span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 0, 1)">selector:
</span><span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)">    matchLabels:
</span><span style="color: rgba(0, 128, 128, 1)">13</span> <span style="color: rgba(0, 0, 0, 1)">      app: myapp
</span><span style="color: rgba(0, 128, 128, 1)">14</span> <span style="color: rgba(0, 0, 0, 1)">      release: v1
</span><span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)">template:
</span><span style="color: rgba(0, 128, 128, 1)">16</span> <span style="color: rgba(0, 0, 0, 1)">    metadata:
</span><span style="color: rgba(0, 128, 128, 1)">17</span> <span style="color: rgba(0, 0, 0, 1)">      labels:
</span><span style="color: rgba(0, 128, 128, 1)">18</span> <span style="color: rgba(0, 0, 0, 1)">      app: myapp
</span><span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 0, 1)">      release: v1
</span><span style="color: rgba(0, 128, 128, 1)">20</span>         <span style="color: rgba(0, 0, 255, 1)">env</span><span style="color: rgba(0, 0, 0, 1)">: test
</span><span style="color: rgba(0, 128, 128, 1)">21</span> <span style="color: rgba(0, 0, 0, 1)">    spec:
</span><span style="color: rgba(0, 128, 128, 1)">22</span> <span style="color: rgba(0, 0, 0, 1)">      containers:
</span><span style="color: rgba(0, 128, 128, 1)">23</span>       -<span style="color: rgba(0, 0, 0, 1)"> name: myapp
</span><span style="color: rgba(0, 128, 128, 1)">24</span>         image: registry.cn-beijing.aliyuncs.com/google_registry/<span style="color: rgba(0, 0, 0, 1)">myapp:v1
</span><span style="color: rgba(0, 128, 128, 1)">25</span> <span style="color: rgba(0, 0, 0, 1)">      imagePullPolicy: IfNotPresent
</span><span style="color: rgba(0, 128, 128, 1)">26</span> <span style="color: rgba(0, 0, 0, 1)">      ports:
</span><span style="color: rgba(0, 128, 128, 1)">27</span>         -<span style="color: rgba(0, 0, 0, 1)"> name: http
</span><span style="color: rgba(0, 128, 128, 1)">28</span>         containerPort: <span style="color: rgba(128, 0, 128, 1)">80</span>
<span style="color: rgba(0, 128, 128, 1)">29</span> ---
<span style="color: rgba(0, 128, 128, 1)">30</span> <span style="color: rgba(0, 0, 0, 1)">apiVersion: v1
</span><span style="color: rgba(0, 128, 128, 1)">31</span> <span style="color: rgba(0, 0, 0, 1)">kind: Service
</span><span style="color: rgba(0, 128, 128, 1)">32</span> <span style="color: rgba(0, 0, 0, 1)">metadata:
</span><span style="color: rgba(0, 128, 128, 1)">33</span>   name: myapp-<span style="color: rgba(0, 0, 0, 1)">clusterip1
</span><span style="color: rgba(0, 128, 128, 1)">34</span> <span style="color: rgba(0, 0, 0, 1)">namespace: default
</span><span style="color: rgba(0, 128, 128, 1)">35</span> <span style="color: rgba(0, 0, 0, 1)">spec:
</span><span style="color: rgba(0, 128, 128, 1)">36</span> <span style="color: rgba(0, 0, 0, 1)">type: ClusterIP# 默认类型
</span><span style="color: rgba(0, 128, 128, 1)">37</span> <span style="color: rgba(0, 0, 0, 1)">selector:
</span><span style="color: rgba(0, 128, 128, 1)">38</span> <span style="color: rgba(0, 0, 0, 1)">    app: myapp
</span><span style="color: rgba(0, 128, 128, 1)">39</span> <span style="color: rgba(0, 0, 0, 1)">    release: v1
</span><span style="color: rgba(0, 128, 128, 1)">40</span> <span style="color: rgba(0, 0, 0, 1)">ports:
</span><span style="color: rgba(0, 128, 128, 1)">41</span>   -<span style="color: rgba(0, 0, 0, 1)"> name: http
</span><span style="color: rgba(0, 128, 128, 1)">42</span>   port: <span style="color: rgba(128, 0, 128, 1)">80</span>
<span style="color: rgba(0, 128, 128, 1)">43</span>   targetPort: <span style="color: rgba(128, 0, 128, 1)">80</span></pre>
</div>
<p>&nbsp;</p>
<p>启动Deployment和Service</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> # kubectl apply -<span style="color: rgba(0, 0, 0, 1)">f deply_service1.yaml
</span><span style="color: rgba(0, 128, 128, 1)">2</span> deployment.apps/myapp-<span style="color: rgba(0, 0, 0, 1)">deploy1 created
</span><span style="color: rgba(0, 128, 128, 1)">3</span> service/myapp-clusterip1 created</pre>
</div>
<p>&nbsp;</p>
<p>查看Deploy状态和信息</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> # kubectl get deploy -<span style="color: rgba(0, 0, 0, 1)">o wide
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> NAME            READY   UP-TO-<span style="color: rgba(0, 0, 0, 1)">DATE   AVAILABLE   AGE   CONTAINERS   IMAGES                                                      SELECTOR
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> myapp-deploy1   <span style="color: rgba(128, 0, 128, 1)">3</span>/<span style="color: rgba(128, 0, 128, 1)">3</span>   <span style="color: rgba(128, 0, 128, 1)">3</span>            <span style="color: rgba(128, 0, 128, 1)">3</span>         28s   myapp      registry.cn-beijing.aliyuncs.com/google_registry/myapp:v1   app=myapp,release=<span style="color: rgba(0, 0, 0, 1)">v1
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> #
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> # kubectl get rs -<span style="color: rgba(0, 0, 0, 1)">o wide
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)">NAME                     DESIRED   CURRENT   READY   AGE   CONTAINERS   IMAGES                                                      SELECTOR
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> myapp-deploy1-5695bb5658   <span style="color: rgba(128, 0, 128, 1)">3</span>         <span style="color: rgba(128, 0, 128, 1)">3</span>         <span style="color: rgba(128, 0, 128, 1)">3</span>       30s   myapp      registry.cn-beijing.aliyuncs.com/google_registry/myapp:v1   app=myapp,pod-template-hash=5695bb5658,release=<span style="color: rgba(0, 0, 0, 1)">v1
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> #
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> # kubectl get pod -o wide --show-<span style="color: rgba(0, 0, 0, 1)">labels
</span><span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)">NAME                           READY   STATUS    RESTARTS   AGE   IP             NODE         NOMINATED NODE   READINESS GATES   LABELS
</span><span style="color: rgba(0, 128, 128, 1)">11</span> myapp-deploy1-5695bb5658-n6548   <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span>   Running   <span style="color: rgba(128, 0, 128, 1)">0</span>          36s   <span style="color: rgba(128, 0, 128, 1)">10.244</span>.<span style="color: rgba(128, 0, 128, 1)">2.144</span>   k8s-node02   &lt;none&gt;         &lt;none&gt;            app=myapp,<span style="color: rgba(0, 0, 255, 1)">env</span>=test,pod-template-hash=5695bb5658,release=<span style="color: rgba(0, 0, 0, 1)">v1
</span><span style="color: rgba(0, 128, 128, 1)">12</span> myapp-deploy1-5695bb5658-rqcpb   <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span>   Running   <span style="color: rgba(128, 0, 128, 1)">0</span>          36s   <span style="color: rgba(128, 0, 128, 1)">10.244</span>.<span style="color: rgba(128, 0, 128, 1)">2.143</span>   k8s-node02   &lt;none&gt;         &lt;none&gt;            app=myapp,<span style="color: rgba(0, 0, 255, 1)">env</span>=test,pod-template-hash=5695bb5658,release=<span style="color: rgba(0, 0, 0, 1)">v1
</span><span style="color: rgba(0, 128, 128, 1)">13</span> myapp-deploy1-5695bb5658-vv6gm   <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span>   Running   <span style="color: rgba(128, 0, 128, 1)">0</span>          36s   <span style="color: rgba(128, 0, 128, 1)">10.244</span>.<span style="color: rgba(128, 0, 128, 1)">3.200</span>   k8s-node01   &lt;none&gt;         &lt;none&gt;            app=myapp,<span style="color: rgba(0, 0, 255, 1)">env</span>=test,pod-template-hash=5695bb5658,release=v1</pre>
</div>
<p>&nbsp;</p>
<p>curl访问pod</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> # curl <span style="color: rgba(128, 0, 128, 1)">10.244</span>.<span style="color: rgba(128, 0, 128, 1)">2.144</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> Hello MyApp | Version: v1 | &lt;a href=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hostname.html</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;Pod Name&lt;/a&gt;
<span style="color: rgba(0, 128, 128, 1)"> 3</span> #
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> # curl <span style="color: rgba(128, 0, 128, 1)">10.244</span>.<span style="color: rgba(128, 0, 128, 1)">2.144</span>/<span style="color: rgba(0, 0, 255, 1)">hostname</span><span style="color: rgba(0, 0, 0, 1)">.html
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> myapp-deploy1-5695bb5658-<span style="color: rgba(0, 0, 0, 1)">n6548
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> #
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> # curl <span style="color: rgba(128, 0, 128, 1)">10.244</span>.<span style="color: rgba(128, 0, 128, 1)">2.143</span>/<span style="color: rgba(0, 0, 255, 1)">hostname</span><span style="color: rgba(0, 0, 0, 1)">.html
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> myapp-deploy1-5695bb5658-<span style="color: rgba(0, 0, 0, 1)">rqcpb
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> #
</span><span style="color: rgba(0, 128, 128, 1)">10</span> # curl <span style="color: rgba(128, 0, 128, 1)">10.244</span>.<span style="color: rgba(128, 0, 128, 1)">3.200</span>/<span style="color: rgba(0, 0, 255, 1)">hostname</span><span style="color: rgba(0, 0, 0, 1)">.html
</span><span style="color: rgba(0, 128, 128, 1)">11</span> myapp-deploy1-5695bb5658-vv6gm</pre>
</div>
<p>&nbsp;</p>
<p>查看Service状态和信息</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> # kubectl get svc -<span style="color: rgba(0, 0, 0, 1)">o wide
</span><span style="color: rgba(0, 128, 128, 1)">2</span> NAME               TYPE      CLUSTER-IP      EXTERNAL-<span style="color: rgba(0, 0, 0, 1)">IP   PORT(S)   AGE   SELECTOR
</span><span style="color: rgba(0, 128, 128, 1)">3</span> kubernetes         ClusterIP   <span style="color: rgba(128, 0, 128, 1)">10.96</span>.<span style="color: rgba(128, 0, 128, 1)">0.1</span>       &lt;none&gt;      <span style="color: rgba(128, 0, 128, 1)">443</span>/TCP   19d   &lt;none&gt;
<span style="color: rgba(0, 128, 128, 1)">4</span> myapp-clusterip1   ClusterIP   <span style="color: rgba(128, 0, 128, 1)">10.104</span>.<span style="color: rgba(128, 0, 128, 1)">146.14</span>   &lt;none&gt;      <span style="color: rgba(128, 0, 128, 1)">80</span>/TCP    5m38s   app=myapp,release=v1</pre>
</div>
<p>&nbsp;</p>
<p>curl访问svc</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> # curl <span style="color: rgba(128, 0, 128, 1)">10.104</span>.<span style="color: rgba(128, 0, 128, 1)">146.14</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> Hello MyApp | Version: v1 | &lt;a href=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hostname.html</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;Pod Name&lt;/a&gt;
<span style="color: rgba(0, 128, 128, 1)"> 3</span> #
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> # curl <span style="color: rgba(128, 0, 128, 1)">10.104</span>.<span style="color: rgba(128, 0, 128, 1)">146.14</span>/<span style="color: rgba(0, 0, 255, 1)">hostname</span><span style="color: rgba(0, 0, 0, 1)">.html
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> myapp-deploy1-5695bb5658-<span style="color: rgba(0, 0, 0, 1)">n6548
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> #
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> # curl <span style="color: rgba(128, 0, 128, 1)">10.104</span>.<span style="color: rgba(128, 0, 128, 1)">146.14</span>/<span style="color: rgba(0, 0, 255, 1)">hostname</span><span style="color: rgba(0, 0, 0, 1)">.html
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> myapp-deploy1-5695bb5658-<span style="color: rgba(0, 0, 0, 1)">vv6gm
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> #
</span><span style="color: rgba(0, 128, 128, 1)">10</span> # curl <span style="color: rgba(128, 0, 128, 1)">10.104</span>.<span style="color: rgba(128, 0, 128, 1)">146.14</span>/<span style="color: rgba(0, 0, 255, 1)">hostname</span><span style="color: rgba(0, 0, 0, 1)">.html
</span><span style="color: rgba(0, 128, 128, 1)">11</span> myapp-deploy1-5695bb5658-rqcpb</pre>
</div>
<p>&nbsp;</p>
<h2 id="deply-service2的yaml信息">deply_service2的yaml信息</h2>
<p>yaml文件</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> # <span style="color: rgba(0, 0, 255, 1)">pwd</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> /root/k8s_practice/<span style="color: rgba(0, 0, 0, 1)">ingress
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> # <span style="color: rgba(0, 0, 255, 1)">cat</span><span style="color: rgba(0, 0, 0, 1)"> deply_service2.yaml
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> apiVersion: apps/<span style="color: rgba(0, 0, 0, 1)">v1
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 0, 1)">kind: Deployment
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)">metadata:
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span>   name: myapp-<span style="color: rgba(0, 0, 0, 1)">deploy2
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 0, 1)">namespace: default
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 0, 1)">spec:
</span><span style="color: rgba(0, 128, 128, 1)">10</span>   replicas: <span style="color: rgba(128, 0, 128, 1)">3</span>
<span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 0, 1)">selector:
</span><span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)">    matchLabels:
</span><span style="color: rgba(0, 128, 128, 1)">13</span> <span style="color: rgba(0, 0, 0, 1)">      app: myapp
</span><span style="color: rgba(0, 128, 128, 1)">14</span> <span style="color: rgba(0, 0, 0, 1)">      release: v2
</span><span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)">template:
</span><span style="color: rgba(0, 128, 128, 1)">16</span> <span style="color: rgba(0, 0, 0, 1)">    metadata:
</span><span style="color: rgba(0, 128, 128, 1)">17</span> <span style="color: rgba(0, 0, 0, 1)">      labels:
</span><span style="color: rgba(0, 128, 128, 1)">18</span> <span style="color: rgba(0, 0, 0, 1)">      app: myapp
</span><span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 0, 1)">      release: v2
</span><span style="color: rgba(0, 128, 128, 1)">20</span>         <span style="color: rgba(0, 0, 255, 1)">env</span><span style="color: rgba(0, 0, 0, 1)">: test
</span><span style="color: rgba(0, 128, 128, 1)">21</span> <span style="color: rgba(0, 0, 0, 1)">    spec:
</span><span style="color: rgba(0, 128, 128, 1)">22</span> <span style="color: rgba(0, 0, 0, 1)">      containers:
</span><span style="color: rgba(0, 128, 128, 1)">23</span>       -<span style="color: rgba(0, 0, 0, 1)"> name: myapp
</span><span style="color: rgba(0, 128, 128, 1)">24</span>         image: registry.cn-beijing.aliyuncs.com/google_registry/<span style="color: rgba(0, 0, 0, 1)">myapp:v2
</span><span style="color: rgba(0, 128, 128, 1)">25</span> <span style="color: rgba(0, 0, 0, 1)">      imagePullPolicy: IfNotPresent
</span><span style="color: rgba(0, 128, 128, 1)">26</span> <span style="color: rgba(0, 0, 0, 1)">      ports:
</span><span style="color: rgba(0, 128, 128, 1)">27</span>         -<span style="color: rgba(0, 0, 0, 1)"> name: http
</span><span style="color: rgba(0, 128, 128, 1)">28</span>         containerPort: <span style="color: rgba(128, 0, 128, 1)">80</span>
<span style="color: rgba(0, 128, 128, 1)">29</span> ---
<span style="color: rgba(0, 128, 128, 1)">30</span> <span style="color: rgba(0, 0, 0, 1)">apiVersion: v1
</span><span style="color: rgba(0, 128, 128, 1)">31</span> <span style="color: rgba(0, 0, 0, 1)">kind: Service
</span><span style="color: rgba(0, 128, 128, 1)">32</span> <span style="color: rgba(0, 0, 0, 1)">metadata:
</span><span style="color: rgba(0, 128, 128, 1)">33</span>   name: myapp-<span style="color: rgba(0, 0, 0, 1)">clusterip2
</span><span style="color: rgba(0, 128, 128, 1)">34</span> <span style="color: rgba(0, 0, 0, 1)">namespace: default
</span><span style="color: rgba(0, 128, 128, 1)">35</span> <span style="color: rgba(0, 0, 0, 1)">spec:
</span><span style="color: rgba(0, 128, 128, 1)">36</span> <span style="color: rgba(0, 0, 0, 1)">type: ClusterIP# 默认类型
</span><span style="color: rgba(0, 128, 128, 1)">37</span> <span style="color: rgba(0, 0, 0, 1)">selector:
</span><span style="color: rgba(0, 128, 128, 1)">38</span> <span style="color: rgba(0, 0, 0, 1)">    app: myapp
</span><span style="color: rgba(0, 128, 128, 1)">39</span> <span style="color: rgba(0, 0, 0, 1)">    release: v2
</span><span style="color: rgba(0, 128, 128, 1)">40</span> <span style="color: rgba(0, 0, 0, 1)">ports:
</span><span style="color: rgba(0, 128, 128, 1)">41</span>   -<span style="color: rgba(0, 0, 0, 1)"> name: http
</span><span style="color: rgba(0, 128, 128, 1)">42</span>   port: <span style="color: rgba(128, 0, 128, 1)">80</span>
<span style="color: rgba(0, 128, 128, 1)">43</span>   targetPort: <span style="color: rgba(128, 0, 128, 1)">80</span></pre>
</div>
<p>&nbsp;</p>
<p>启动Deployment和Service</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> # kubectl apply -<span style="color: rgba(0, 0, 0, 1)">f deply_service2.yaml
</span><span style="color: rgba(0, 128, 128, 1)">2</span> deployment.apps/myapp-<span style="color: rgba(0, 0, 0, 1)">deploy2 created
</span><span style="color: rgba(0, 128, 128, 1)">3</span> service/myapp-clusterip2 created</pre>
</div>
<p>&nbsp;</p>
<p>查看Deploy状态和信息</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> # kubectl get deploy myapp-deploy2 -<span style="color: rgba(0, 0, 0, 1)">o wide
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> NAME            READY   UP-TO-<span style="color: rgba(0, 0, 0, 1)">DATE   AVAILABLE   AGE   CONTAINERS   IMAGES                                                      SELECTOR
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> myapp-deploy2   <span style="color: rgba(128, 0, 128, 1)">3</span>/<span style="color: rgba(128, 0, 128, 1)">3</span>   <span style="color: rgba(128, 0, 128, 1)">3</span>            <span style="color: rgba(128, 0, 128, 1)">3</span>         9s    myapp      registry.cn-beijing.aliyuncs.com/google_registry/myapp:v2   app=myapp,release=<span style="color: rgba(0, 0, 0, 1)">v2
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> #
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> # kubectl get rs-<span style="color: rgba(0, 0, 0, 1)">o wide
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)">NAME                     DESIRED   CURRENT   READY   AGE   CONTAINERS   IMAGES                                                      SELECTOR
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> myapp-deploy1-5695bb5658   <span style="color: rgba(128, 0, 128, 1)">3</span>         <span style="color: rgba(128, 0, 128, 1)">3</span>         <span style="color: rgba(128, 0, 128, 1)">3</span>       7m23s   myapp      registry.cn-beijing.aliyuncs.com/google_registry/myapp:v1   app=myapp,pod-template-hash=5695bb5658,release=<span style="color: rgba(0, 0, 0, 1)">v1   # 之前创建的
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> myapp-deploy2-54f48f879b   <span style="color: rgba(128, 0, 128, 1)">3</span>         <span style="color: rgba(128, 0, 128, 1)">3</span>         <span style="color: rgba(128, 0, 128, 1)">3</span>       15s   myapp      registry.cn-beijing.aliyuncs.com/google_registry/myapp:v2   app=myapp,pod-template-hash=54f48f879b,release=<span style="color: rgba(0, 0, 0, 1)">v2   # 当前deploy创建的
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> #
</span><span style="color: rgba(0, 128, 128, 1)">10</span> # kubectl get pod -o wide --show-labels -l <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">release=v2</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 0, 1)">NAME                           READY   STATUS    RESTARTS   AGE   IP             NODE         NOMINATED NODE   READINESS GATES   LABELS
</span><span style="color: rgba(0, 128, 128, 1)">12</span> myapp-deploy2-54f48f879b-7pxwp   <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span>   Running   <span style="color: rgba(128, 0, 128, 1)">0</span>          25s   <span style="color: rgba(128, 0, 128, 1)">10.244</span>.<span style="color: rgba(128, 0, 128, 1)">3.201</span>   k8s-node01   &lt;none&gt;         &lt;none&gt;            app=myapp,<span style="color: rgba(0, 0, 255, 1)">env</span>=test,pod-template-hash=54f48f879b,release=<span style="color: rgba(0, 0, 0, 1)">v2
</span><span style="color: rgba(0, 128, 128, 1)">13</span> myapp-deploy2-54f48f879b-lqlh2   <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span>   Running   <span style="color: rgba(128, 0, 128, 1)">0</span>          25s   <span style="color: rgba(128, 0, 128, 1)">10.244</span>.<span style="color: rgba(128, 0, 128, 1)">2.146</span>   k8s-node02   &lt;none&gt;         &lt;none&gt;            app=myapp,<span style="color: rgba(0, 0, 255, 1)">env</span>=test,pod-template-hash=54f48f879b,release=<span style="color: rgba(0, 0, 0, 1)">v2
</span><span style="color: rgba(0, 128, 128, 1)">14</span> myapp-deploy2-54f48f879b-pfvnn   <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span>   Running   <span style="color: rgba(128, 0, 128, 1)">0</span>          25s   <span style="color: rgba(128, 0, 128, 1)">10.244</span>.<span style="color: rgba(128, 0, 128, 1)">2.145</span>   k8s-node02   &lt;none&gt;         &lt;none&gt;            app=myapp,<span style="color: rgba(0, 0, 255, 1)">env</span>=test,pod-template-hash=54f48f879b,release=v2</pre>
</div>
<p>&nbsp;</p>
<p>查看Service状态和信息</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> # kubectl get svc -<span style="color: rgba(0, 0, 0, 1)">o wide
</span><span style="color: rgba(0, 128, 128, 1)">2</span> NAME               TYPE      CLUSTER-IP      EXTERNAL-<span style="color: rgba(0, 0, 0, 1)">IP   PORT(S)   AGE    SELECTOR
</span><span style="color: rgba(0, 128, 128, 1)">3</span> kubernetes         ClusterIP   <span style="color: rgba(128, 0, 128, 1)">10.96</span>.<span style="color: rgba(128, 0, 128, 1)">0.1</span>       &lt;none&gt;      <span style="color: rgba(128, 0, 128, 1)">443</span>/TCP   19d    &lt;none&gt;
<span style="color: rgba(0, 128, 128, 1)">4</span> myapp-clusterip1   ClusterIP   <span style="color: rgba(128, 0, 128, 1)">10.104</span>.<span style="color: rgba(128, 0, 128, 1)">146.14</span>   &lt;none&gt;      <span style="color: rgba(128, 0, 128, 1)">80</span>/TCP    8m9s   app=myapp,release=<span style="color: rgba(0, 0, 0, 1)">v1
</span><span style="color: rgba(0, 128, 128, 1)">5</span> myapp-clusterip2   ClusterIP   <span style="color: rgba(128, 0, 128, 1)">10.110</span>.<span style="color: rgba(128, 0, 128, 1)">181.62</span>   &lt;none&gt;      <span style="color: rgba(128, 0, 128, 1)">80</span>/TCP    61s    app=myapp,release=v2</pre>
</div>
<p>&nbsp;</p>
<p>curl访问svc</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> # curl <span style="color: rgba(128, 0, 128, 1)">10.110</span>.<span style="color: rgba(128, 0, 128, 1)">181.62</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> Hello MyApp | Version: v2 | &lt;a href=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hostname.html</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;Pod Name&lt;/a&gt;
<span style="color: rgba(0, 128, 128, 1)"> 3</span> #
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> # curl <span style="color: rgba(128, 0, 128, 1)">10.110</span>.<span style="color: rgba(128, 0, 128, 1)">181.62</span>/<span style="color: rgba(0, 0, 255, 1)">hostname</span><span style="color: rgba(0, 0, 0, 1)">.html
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> myapp-deploy2-54f48f879b-<span style="color: rgba(0, 0, 0, 1)">lqlh2
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> #
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> # curl <span style="color: rgba(128, 0, 128, 1)">10.110</span>.<span style="color: rgba(128, 0, 128, 1)">181.62</span>/<span style="color: rgba(0, 0, 255, 1)">hostname</span><span style="color: rgba(0, 0, 0, 1)">.html
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> myapp-deploy2-54f48f879b-<span style="color: rgba(0, 0, 0, 1)">7pxwp
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> #
</span><span style="color: rgba(0, 128, 128, 1)">10</span> # curl <span style="color: rgba(128, 0, 128, 1)">10.110</span>.<span style="color: rgba(128, 0, 128, 1)">181.62</span>/<span style="color: rgba(0, 0, 255, 1)">hostname</span><span style="color: rgba(0, 0, 0, 1)">.html
</span><span style="color: rgba(0, 128, 128, 1)">11</span> myapp-deploy2-54f48f879b-pfvnn</pre>
</div>
<p>&nbsp;</p>
<h2 id="Ingress-HTTP代理访问">Ingress HTTP代理访问</h2>
<p>yaml文件【由于自建的service在默认default名称空间,因此这里也是default名称空间】</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> # <span style="color: rgba(0, 0, 255, 1)">pwd</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> /root/k8s_practice/<span style="color: rgba(0, 0, 0, 1)">ingress
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> # <span style="color: rgba(0, 0, 255, 1)">cat</span> ingress-<span style="color: rgba(0, 0, 0, 1)">http.yaml
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> apiVersion: networking.k8s.io/<span style="color: rgba(0, 0, 0, 1)">v1beta1
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 0, 1)">kind: Ingress
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)">metadata:
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span>   name: nginx-<span style="color: rgba(0, 0, 0, 1)">http
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 0, 1)">namespace: default
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 0, 1)">spec:
</span><span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)">rules:
</span><span style="color: rgba(0, 128, 128, 1)">11</span>   -<span style="color: rgba(0, 0, 0, 1)"> host: www.zhangtest.com
</span><span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)">      http:
</span><span style="color: rgba(0, 128, 128, 1)">13</span> <span style="color: rgba(0, 0, 0, 1)">      paths:
</span><span style="color: rgba(0, 128, 128, 1)">14</span>         - path: /
<span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)">          backend:
</span><span style="color: rgba(0, 128, 128, 1)">16</span>             serviceName: myapp-<span style="color: rgba(0, 0, 0, 1)">clusterip1
</span><span style="color: rgba(0, 128, 128, 1)">17</span>             servicePort: <span style="color: rgba(128, 0, 128, 1)">80</span>
<span style="color: rgba(0, 128, 128, 1)">18</span>   -<span style="color: rgba(0, 0, 0, 1)"> host: blog.zhangtest.com
</span><span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 0, 1)">      http:
</span><span style="color: rgba(0, 128, 128, 1)">20</span> <span style="color: rgba(0, 0, 0, 1)">      paths:
</span><span style="color: rgba(0, 128, 128, 1)">21</span>         - path: /
<span style="color: rgba(0, 128, 128, 1)">22</span> <span style="color: rgba(0, 0, 0, 1)">          backend:
</span><span style="color: rgba(0, 128, 128, 1)">23</span>             serviceName: myapp-<span style="color: rgba(0, 0, 0, 1)">clusterip2
</span><span style="color: rgba(0, 128, 128, 1)">24</span>             servicePort: <span style="color: rgba(128, 0, 128, 1)">80</span></pre>
</div>
<p>&nbsp;</p>
<p>启动ingress http并查看状态</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> # kubectl apply -f ingress-<span style="color: rgba(0, 0, 0, 1)">http.yaml
</span><span style="color: rgba(0, 128, 128, 1)">2</span> ingress.networking.k8s.io/nginx-<span style="color: rgba(0, 0, 0, 1)">http created
</span><span style="color: rgba(0, 128, 128, 1)">3</span> #
</span><span style="color: rgba(0, 128, 128, 1)">4</span> # kubectl get ingress -<span style="color: rgba(0, 0, 0, 1)">o wide
</span><span style="color: rgba(0, 128, 128, 1)">5</span> <span style="color: rgba(0, 0, 0, 1)">NAME         HOSTS                                  ADDRESS   PORTS   AGE
</span><span style="color: rgba(0, 128, 128, 1)">6</span> nginx-http   www.zhangtest.com,blog.zhangtest.com             <span style="color: rgba(128, 0, 128, 1)">80</span>      9s</pre>
</div>
<p>&nbsp;</p>
<p>查看nginx配置文件</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> # kubectl get pod -A | <span style="color: rgba(0, 0, 255, 1)">grep</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">ingre</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)">2</span> ingress-nginx          nginx-ingress-controller-rrbh9               <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span>   Running   <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">          27m
</span><span style="color: rgba(0, 128, 128, 1)">3</span> #
</span><span style="color: rgba(0, 128, 128, 1)">4</span> # kubectl exec -it -n ingress-nginx nginx-ingress-controller-<span style="color: rgba(0, 0, 0, 1)">rrbh9 bash
</span><span style="color: rgba(0, 128, 128, 1)">5</span> bash-<span style="color: rgba(128, 0, 128, 1)">5.0</span>$ <span style="color: rgba(0, 0, 255, 1)">cat</span> /etc/nginx/<span style="color: rgba(0, 0, 0, 1)">nginx.conf
</span><span style="color: rgba(0, 128, 128, 1)">6</span> <span style="color: rgba(0, 0, 0, 1)">…………
</span><span style="color: rgba(0, 128, 128, 1)">7</span> ##### 可见server www.zhangtest.com 和 server blog.zhangtest.com的配置</pre>
</div>
<p>&nbsp;</p>
<h3 id="浏览器访问">浏览器访问</h3>
<p>hosts文件修改,添加如下信息</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)">文件位置:C:\WINDOWS\System32\drivers\etc\hosts
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 0, 1)">添加信息如下:
</span><span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 0, 0, 1)"># K8S ingress学习
</span><span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(128, 0, 128, 1)">10.0</span>.<span style="color: rgba(128, 0, 128, 1)">0.110</span>www.zhangtest.comblog.zhangtest.com</pre>
</div>
<p>&nbsp;</p>
<p>浏览器访问www.zhangtest.com</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">www.zhangtest.com/</span>
<span style="color: rgba(0, 128, 128, 1)">2</span> http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">www.zhangtest.com/hostname.html</span></pre>
</div>
<p><img src="https://img2020.cnblogs.com/blog/1395193/202009/1395193-20200923213402277-142402959.png"></p>
<p>&nbsp;</p>
<p>浏览器访问blog.zhangtest.com</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">blog.zhangtest.com/</span>
<span style="color: rgba(0, 128, 128, 1)">2</span> http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">blog.zhangtest.com/hostname.html</span></pre>
</div>
<p><img src="https://img2020.cnblogs.com/blog/1395193/202009/1395193-20200923213430406-1252674577.png"></p>
<p>&nbsp;</p>
<p><span style="color: rgba(255, 0, 0, 1)">当然:除了用浏览器访问外,也可以在Linux使用curl访问。前提是修改/etc/hosts文件,对上面的两个域名进行解析。</span></p>
<p>&nbsp;</p>
<h2 id="Ingress-HTTPS代理访问">Ingress HTTPS代理访问</h2>
<h3 id="SSL证书创建">SSL证书创建</h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> # <span style="color: rgba(0, 0, 255, 1)">pwd</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> /root/k8s_practice/ingress/<span style="color: rgba(0, 0, 0, 1)">cert
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> # openssl req -x509 -sha256 -nodes -days <span style="color: rgba(128, 0, 128, 1)">365</span> -newkey rsa:<span style="color: rgba(128, 0, 128, 1)">2048</span> -keyout tls.key -out tls.crt -subj <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/C=CN/ST=BJ/L=BeiJing/O=BTC/OU=MOST/CN=zhang/emailAddress=ca@test.com</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span> Generating a <span style="color: rgba(128, 0, 128, 1)">2048</span><span style="color: rgba(0, 0, 0, 1)"> bit RSA private key
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> ......................................................+++
<span style="color: rgba(0, 128, 128, 1)"> 6</span> ........................+++
<span style="color: rgba(0, 128, 128, 1)"> 7</span> writing new private key to <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">tls.key</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 8</span> -----
<span style="color: rgba(0, 128, 128, 1)"> 9</span> # kubectl create secret tls tls-secret --key tls.key --<span style="color: rgba(0, 0, 0, 1)">cert tls.crt
</span><span style="color: rgba(0, 128, 128, 1)">10</span> secret/tls-secret created</pre>
</div>
<p>&nbsp;</p>
<h3 id="创建ingress-https">创建ingress https</h3>
<p>yaml文件【由于自建的service在默认default名称空间,因此这里也是default名称空间】</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> # <span style="color: rgba(0, 0, 255, 1)">pwd</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> /root/k8s_practice/<span style="color: rgba(0, 0, 0, 1)">ingress
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> # <span style="color: rgba(0, 0, 255, 1)">cat</span> ingress-<span style="color: rgba(0, 0, 0, 1)">https.yaml
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> apiVersion: networking.k8s.io/<span style="color: rgba(0, 0, 0, 1)">v1beta1
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 0, 1)">kind: Ingress
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)">metadata:
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span>   name: nginx-<span style="color: rgba(0, 0, 0, 1)">https
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 0, 1)">namespace: default
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 0, 1)">spec:
</span><span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)">tls:
</span><span style="color: rgba(0, 128, 128, 1)">11</span>   -<span style="color: rgba(0, 0, 0, 1)"> hosts:
</span><span style="color: rgba(0, 128, 128, 1)">12</span>       -<span style="color: rgba(0, 0, 0, 1)"> www.zhangtest.com
</span><span style="color: rgba(0, 128, 128, 1)">13</span>       -<span style="color: rgba(0, 0, 0, 1)"> blog.zhangtest.com
</span><span style="color: rgba(0, 128, 128, 1)">14</span>       secretName: tls-<span style="color: rgba(0, 0, 0, 1)">secret
</span><span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)">rules:
</span><span style="color: rgba(0, 128, 128, 1)">16</span>   -<span style="color: rgba(0, 0, 0, 1)"> host: www.zhangtest.com
</span><span style="color: rgba(0, 128, 128, 1)">17</span> <span style="color: rgba(0, 0, 0, 1)">      http:
</span><span style="color: rgba(0, 128, 128, 1)">18</span> <span style="color: rgba(0, 0, 0, 1)">      paths:
</span><span style="color: rgba(0, 128, 128, 1)">19</span>         - path: /
<span style="color: rgba(0, 128, 128, 1)">20</span> <span style="color: rgba(0, 0, 0, 1)">          backend:
</span><span style="color: rgba(0, 128, 128, 1)">21</span>             serviceName: myapp-<span style="color: rgba(0, 0, 0, 1)">clusterip1
</span><span style="color: rgba(0, 128, 128, 1)">22</span>             servicePort: <span style="color: rgba(128, 0, 128, 1)">80</span>
<span style="color: rgba(0, 128, 128, 1)">23</span>   -<span style="color: rgba(0, 0, 0, 1)"> host: blog.zhangtest.com
</span><span style="color: rgba(0, 128, 128, 1)">24</span> <span style="color: rgba(0, 0, 0, 1)">      http:
</span><span style="color: rgba(0, 128, 128, 1)">25</span> <span style="color: rgba(0, 0, 0, 1)">      paths:
</span><span style="color: rgba(0, 128, 128, 1)">26</span>         - path: /
<span style="color: rgba(0, 128, 128, 1)">27</span> <span style="color: rgba(0, 0, 0, 1)">          backend:
</span><span style="color: rgba(0, 128, 128, 1)">28</span>             serviceName: myapp-<span style="color: rgba(0, 0, 0, 1)">clusterip2
</span><span style="color: rgba(0, 128, 128, 1)">29</span>             servicePort: <span style="color: rgba(128, 0, 128, 1)">80</span></pre>
</div>
<p>&nbsp;</p>
<p>启动ingress https并查看状态</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> # kubectl apply -f ingress-<span style="color: rgba(0, 0, 0, 1)">https.yaml
</span><span style="color: rgba(0, 128, 128, 1)">2</span> ingress.networking.k8s.io/nginx-<span style="color: rgba(0, 0, 0, 1)">https created
</span><span style="color: rgba(0, 128, 128, 1)">3</span> #
</span><span style="color: rgba(0, 128, 128, 1)">4</span> # kubectl get ingress -<span style="color: rgba(0, 0, 0, 1)">o wide
</span><span style="color: rgba(0, 128, 128, 1)">5</span> <span style="color: rgba(0, 0, 0, 1)">NAME          HOSTS                                  ADDRESS   PORTS   AGE
</span><span style="color: rgba(0, 128, 128, 1)">6</span> nginx-https   www.zhangtest.com,blog.zhangtest.com             <span style="color: rgba(128, 0, 128, 1)">80</span>, <span style="color: rgba(128, 0, 128, 1)">443</span>   8s</pre>
</div>
<p>&nbsp;</p>
<h3 id="浏览器访问-1">浏览器访问</h3>
<p>hosts文件修改,添加如下信息</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)">文件位置:C:\WINDOWS\System32\drivers\etc\hosts
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 0, 1)">添加信息如下:
</span><span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 0, 0, 1)"># K8S ingress学习
</span><span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(128, 0, 128, 1)">10.0</span>.<span style="color: rgba(128, 0, 128, 1)">0.110</span>www.zhangtest.comblog.zhangtest.com</pre>
</div>
<p>&nbsp;</p>
<p>浏览器访问www.zhangtest.com</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">www.zhangtest.com/</span>
<span style="color: rgba(0, 128, 128, 1)">2</span> https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">www.zhangtest.com/hostname.html</span></pre>
</div>
<p><img src="https://img2020.cnblogs.com/blog/1395193/202009/1395193-20200923213604360-1004242733.png"></p>
<p>&nbsp;</p>
<p>浏览器访问blog.zhangtest.com</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">blog.zhangtest.com/</span>
<span style="color: rgba(0, 128, 128, 1)">2</span> https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">blog.zhangtest.com/hostname.html</span></pre>
</div>
<p><img src="https://img2020.cnblogs.com/blog/1395193/202009/1395193-20200923213630265-647749251.png"></p>
<p>&nbsp;</p>
<h1 id="Ingress-Nginx实现BasicAuth认证">Ingress-Nginx实现BasicAuth认证</h1>
<p>官网地址:</p>
<div class="cnblogs_code">
<pre>https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">kubernetes.github.io/ingress-nginx/examples/auth/basic/</span></pre>
</div>
<p>&nbsp;</p>
<p>准备工作</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> # <span style="color: rgba(0, 0, 255, 1)">pwd</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> /root/k8s_practice/<span style="color: rgba(0, 0, 0, 1)">ingress
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> # <span style="color: rgba(0, 0, 255, 1)">yum</span> <span style="color: rgba(0, 0, 255, 1)">install</span> -<span style="color: rgba(0, 0, 0, 1)">y httpd
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> # htpasswd -<span style="color: rgba(0, 0, 0, 1)">c auth foo
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 0, 1)">New password: #输入密码
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> Re-<span style="color: rgba(0, 0, 0, 1)">type new password: #重复输入的密码
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> Adding password <span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> user foo   ##### 此时会生成一个 auth文件
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> # kubectl create secret generic basic-auth --from-<span style="color: rgba(0, 0, 255, 1)">file</span>=<span style="color: rgba(0, 0, 0, 1)">auth
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> secret/basic-<span style="color: rgba(0, 0, 0, 1)">auth created
</span><span style="color: rgba(0, 128, 128, 1)">10</span> #
</span><span style="color: rgba(0, 128, 128, 1)">11</span> # kubectl get secret basic-auth -<span style="color: rgba(0, 0, 0, 1)">o yaml
</span><span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)">apiVersion: v1
</span><span style="color: rgba(0, 128, 128, 1)">13</span> <span style="color: rgba(0, 0, 0, 1)">data:
</span><span style="color: rgba(0, 128, 128, 1)">14</span> <span style="color: rgba(0, 0, 0, 1)">auth: Zm9vOiRhcHIxJFpaSUJUMDZOJDVNZ3hxdkpFNWVRTi9NdnZCcVpHaC4K
</span><span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)">kind: Secret
</span><span style="color: rgba(0, 128, 128, 1)">16</span> <span style="color: rgba(0, 0, 0, 1)">metadata:
</span><span style="color: rgba(0, 128, 128, 1)">17</span>   creationTimestamp: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2020-08-17T09:42:04Z</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">18</span>   name: basic-<span style="color: rgba(0, 0, 0, 1)">auth
</span><span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 0, 1)">namespace: default
</span><span style="color: rgba(0, 128, 128, 1)">20</span>   resourceVersion: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">775573</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">21</span>   selfLink: /api/v1/namespaces/default/secrets/basic-<span style="color: rgba(0, 0, 0, 1)">auth
</span><span style="color: rgba(0, 128, 128, 1)">22</span>   uid: eef0853b-a52b-<span style="color: rgba(128, 0, 128, 1)">4684</span>-922a-<span style="color: rgba(0, 0, 0, 1)">817e4cd9e9ca
</span><span style="color: rgba(0, 128, 128, 1)">23</span> type: Opaque</pre>
</div>
<p>&nbsp;</p>
<p>ingress yaml文件</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> # <span style="color: rgba(0, 0, 255, 1)">pwd</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> /root/k8s_practice/<span style="color: rgba(0, 0, 0, 1)">ingress
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> # <span style="color: rgba(0, 0, 255, 1)">cat</span><span style="color: rgba(0, 0, 0, 1)"> nginx_basicauth.yaml
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> apiVersion: networking.k8s.io/<span style="color: rgba(0, 0, 0, 1)">v1beta1
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 0, 1)">kind: Ingress
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)">metadata:
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span>   name: ingress-with-<span style="color: rgba(0, 0, 0, 1)">auth
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 0, 1)">annotations:
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 0, 1)">    # type of authentication
</span><span style="color: rgba(0, 128, 128, 1)">10</span>   nginx.ingress.kubernetes.io/auth-<span style="color: rgba(0, 0, 0, 1)">type: basic
</span><span style="color: rgba(0, 128, 128, 1)">11</span>   # name of the secret that contains the user/<span style="color: rgba(0, 0, 0, 1)">password definitions
</span><span style="color: rgba(0, 128, 128, 1)">12</span>   nginx.ingress.kubernetes.io/auth-secret: basic-<span style="color: rgba(0, 0, 0, 1)">auth
</span><span style="color: rgba(0, 128, 128, 1)">13</span> <span style="color: rgba(0, 0, 0, 1)">    # message to display with an appropriate context why the authentication is required
</span><span style="color: rgba(0, 128, 128, 1)">14</span>   nginx.ingress.kubernetes.io/auth-realm: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Authentication Required - foo</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)">spec:
</span><span style="color: rgba(0, 128, 128, 1)">16</span> <span style="color: rgba(0, 0, 0, 1)">rules:
</span><span style="color: rgba(0, 128, 128, 1)">17</span>   -<span style="color: rgba(0, 0, 0, 1)"> host: auth.zhangtest.com
</span><span style="color: rgba(0, 128, 128, 1)">18</span> <span style="color: rgba(0, 0, 0, 1)">    http:
</span><span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 0, 1)">      paths:
</span><span style="color: rgba(0, 128, 128, 1)">20</span>       - path: /
<span style="color: rgba(0, 128, 128, 1)">21</span> <span style="color: rgba(0, 0, 0, 1)">      backend:
</span><span style="color: rgba(0, 128, 128, 1)">22</span>         serviceName: myapp-<span style="color: rgba(0, 0, 0, 1)">clusterip1
</span><span style="color: rgba(0, 128, 128, 1)">23</span>         servicePort: <span style="color: rgba(128, 0, 128, 1)">80</span></pre>
</div>
<p>&nbsp;</p>
<p>启动ingress并查看状态</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> # kubectl apply -<span style="color: rgba(0, 0, 0, 1)">f nginx_basicauth.yaml
</span><span style="color: rgba(0, 128, 128, 1)">2</span> ingress.networking.k8s.io/ingress-with-<span style="color: rgba(0, 0, 0, 1)">auth created
</span><span style="color: rgba(0, 128, 128, 1)">3</span> #
</span><span style="color: rgba(0, 128, 128, 1)">4</span> # kubectl get ingress -<span style="color: rgba(0, 0, 0, 1)">o wide
</span><span style="color: rgba(0, 128, 128, 1)">5</span> <span style="color: rgba(0, 0, 0, 1)">NAME                HOSTS                                  ADDRESS   PORTS   AGE
</span><span style="color: rgba(0, 128, 128, 1)">6</span> ingress-with-auth   auth.zhangtest.com                               <span style="color: rgba(128, 0, 128, 1)">80</span>      6s</pre>
</div>
<p>&nbsp;</p>
<h2 id="浏览器访问-2">浏览器访问</h2>
<p>hosts文件修改,添加如下信息</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)">文件位置:C:\WINDOWS\System32\drivers\etc\hosts
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 0, 1)">添加信息如下:
</span><span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 0, 0, 1)"># K8S ingress学习
</span><span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(128, 0, 128, 1)">10.0</span>.<span style="color: rgba(128, 0, 128, 1)">0.110</span>www.zhangtest.comblog.zhangtest.com auth.zhangtest.com</pre>
</div>
<p>&nbsp;</p>
<p>浏览器访问auth.zhangtest.com</p>
<div class="cnblogs_code">
<pre>http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">auth.zhangtest.com/</span></pre>
</div>
<p><img src="https://img2020.cnblogs.com/blog/1395193/202009/1395193-20200923213803958-279999147.png"></p>
<p>&nbsp;</p>
<h1 id="Ingress-Nginx实现Rewrite重写">Ingress-Nginx实现Rewrite重写</h1>
<p>官网地址:</p>
<div class="cnblogs_code">
<pre>https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">kubernetes.github.io/ingress-nginx/examples/rewrite/</span></pre>
</div>
<p>&nbsp;</p>
<p>重写可以使用以下<span style="color: rgba(255, 0, 0, 1)">注解控制</span>:</p>
<table>
<thead>
<tr><th>名称</th><th>描述</th><th>值</th></tr>
</thead>
<tbody>
<tr>
<td>nginx.ingress.kubernetes.io/rewrite-target</td>
<td>必须重定向的目标URL</td>
<td>String</td>
</tr>
<tr>
<td>nginx.ingress.kubernetes.io/ssl-redirect</td>
<td>指示位置部分是否只能由SSL访问(当Ingress包含证书时,默认为True)</td>
<td>Bool</td>
</tr>
<tr>
<td>nginx.ingress.kubernetes.io/force-ssl-redirect</td>
<td>即使Ingress没有启用TLS,也强制重定向到HTTPS</td>
<td>Bool</td>
</tr>
<tr>
<td>nginx.ingress.kubernetes.io/app-root</td>
<td>定义应用程序根目录,Controller在“/”上下文中必须重定向该根目录</td>
<td>String</td>
</tr>
<tr>
<td>nginx.ingress.kubernetes.io/use-regex</td>
<td>指示Ingress上定义的路径是否使用正则表达式</td>
<td>Bool</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>ingress yaml文件</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> # <span style="color: rgba(0, 0, 255, 1)">pwd</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> /root/k8s_practice/<span style="color: rgba(0, 0, 0, 1)">ingress
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> # <span style="color: rgba(0, 0, 255, 1)">cat</span><span style="color: rgba(0, 0, 0, 1)"> nginx_rewrite.yaml
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> apiVersion: networking.k8s.io/<span style="color: rgba(0, 0, 0, 1)">v1beta1
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 0, 1)">kind: Ingress
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)">metadata:
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(0, 0, 0, 1)">annotations:
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span>   nginx.ingress.kubernetes.io/rewrite-target: https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">www.baidu.com</span>
<span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 0, 1)">name: rewrite
</span><span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)">namespace: default
</span><span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 0, 1)">spec:
</span><span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)">rules:
</span><span style="color: rgba(0, 128, 128, 1)">13</span>   -<span style="color: rgba(0, 0, 0, 1)"> host: rewrite.zhangtest.com
</span><span style="color: rgba(0, 128, 128, 1)">14</span> <span style="color: rgba(0, 0, 0, 1)">    http:
</span><span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)">      paths:
</span><span style="color: rgba(0, 128, 128, 1)">16</span>       -<span style="color: rgba(0, 0, 0, 1)"> backend:
</span><span style="color: rgba(0, 128, 128, 1)">17</span>         serviceName: myapp-<span style="color: rgba(0, 0, 0, 1)">clusterip1
</span><span style="color: rgba(0, 128, 128, 1)">18</span>         servicePort: <span style="color: rgba(128, 0, 128, 1)">80</span></pre>
</div>
<p>&nbsp;</p>
<p>启动ingress并查看状态</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> # kubectl apply -<span style="color: rgba(0, 0, 0, 1)">f nginx_rewrite.yaml
</span><span style="color: rgba(0, 128, 128, 1)">2</span> ingress.networking.k8s.io/<span style="color: rgba(0, 0, 0, 1)">rewrite created
</span><span style="color: rgba(0, 128, 128, 1)">3</span> #
</span><span style="color: rgba(0, 128, 128, 1)">4</span> # kubectl get ingress -<span style="color: rgba(0, 0, 0, 1)">o wide
</span><span style="color: rgba(0, 128, 128, 1)">5</span> <span style="color: rgba(0, 0, 0, 1)">NAME                HOSTS                   ADDRESS          PORTS   AGE
</span><span style="color: rgba(0, 128, 128, 1)">6</span> rewrite             rewrite.zhangtest.com                  <span style="color: rgba(128, 0, 128, 1)">80</span>      13s</pre>
</div>
<p>&nbsp;</p>
<h2 id="浏览器访问-3">浏览器访问</h2>
<p>hosts文件修改,添加如下信息</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)">文件位置:C:\WINDOWS\System32\drivers\etc\hosts
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 0, 1)">添加信息如下:
</span><span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 0, 0, 1)"># K8S ingress学习
</span><span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(128, 0, 128, 1)">10.0</span>.<span style="color: rgba(128, 0, 128, 1)">0.110</span>www.zhangtest.comblog.zhangtest.com auth.zhangtest.comrewrite.zhangtest.com</pre>
</div>
<p>&nbsp;</p>
<p>浏览器访问rewrite.zhangtest.com</p>
<div class="cnblogs_code">
<pre>http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">rewrite.zhangtest.com/</span></pre>
</div>
<p><img src="https://img2020.cnblogs.com/blog/1395193/202009/1395193-20200923214020402-954120757.png"></p>
<p>之后,可见重定向到了https://www.baidu.com 百度页面</p>
<p>&nbsp;</p>
<h1 id="相关阅读">相关阅读</h1>
<p>1、k8s 官方 Ingress</p>
<p>2、Ingress-Nginx官网地址</p>
<p>3、Ingress-Nginx GitHub地址</p>
<p>4、Ingress-Nginx实现BasicAuth认证</p>
<p>5、Ingress-Nginx实现Rewrite重写</p>
<p>&nbsp;</p>
<hr>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p style="text-align: center">———END———<br>如果觉得不错就关注下呗 (-^O^-) !</p>
<p style="text-align: center"><img src="https://img2020.cnblogs.com/blog/1395193/202009/1395193-20200923214138678-1723418619.png"></p>
<p style="text-align: center">&nbsp;</p><br><br>
来源:https://www.cnblogs.com/zhanglianghhh/p/13721288.html
頁: [1]
查看完整版本: Kubernetes K8S之Ingress详解与示例