Kubernetes K8S之Ingress详解与示例
<p> </p><blockquote>
<p>K8S之Ingress概述与说明,并详解Ingress常用示例</p>
</blockquote>
<p> </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> </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> </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> </p>
<p><img src="https://img2020.cnblogs.com/blog/1395193/202009/1395193-20200923212805642-433152881.png"></p>
<p> </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> </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> </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> </p>
<p>本次下载版本:nginx-0.30.0</p>
<p><img src="https://img2020.cnblogs.com/blog/1395193/202009/1395193-20200923212905808-2085269317.png"></p>
<p> </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> </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 <none> <none></pre>
</div>
<p> </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> </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> </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 <none> <none> 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 <none> <none> 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 <none> <none> app=myapp,<span style="color: rgba(0, 0, 255, 1)">env</span>=test,pod-template-hash=5695bb5658,release=v1</pre>
</div>
<p> </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 | <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>>Pod Name</a>
<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> </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> <none> <span style="color: rgba(128, 0, 128, 1)">443</span>/TCP 19d <none>
<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> <none> <span style="color: rgba(128, 0, 128, 1)">80</span>/TCP 5m38s app=myapp,release=v1</pre>
</div>
<p> </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 | <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>>Pod Name</a>
<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> </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> </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> </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 <none> <none> 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 <none> <none> 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 <none> <none> app=myapp,<span style="color: rgba(0, 0, 255, 1)">env</span>=test,pod-template-hash=54f48f879b,release=v2</pre>
</div>
<p> </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> <none> <span style="color: rgba(128, 0, 128, 1)">443</span>/TCP 19d <none>
<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> <none> <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> <none> <span style="color: rgba(128, 0, 128, 1)">80</span>/TCP 61s app=myapp,release=v2</pre>
</div>
<p> </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 | <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>>Pod Name</a>
<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> </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> </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> </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> </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> </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> </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> </p>
<p><span style="color: rgba(255, 0, 0, 1)">当然:除了用浏览器访问外,也可以在Linux使用curl访问。前提是修改/etc/hosts文件,对上面的两个域名进行解析。</span></p>
<p> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </p>
<hr>
<p> </p>
<p> </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"> </p><br><br>
来源:https://www.cnblogs.com/zhanglianghhh/p/13721288.html
頁:
[1]