# Kubernetes核心技術Ingress
## 前言
原來我們需要將端口號對外暴露,通過 ip + 端口號就可以進行訪問
原來是使用Service中的NodePort來實現
- 在每個節點上都會啟動端口
- 在訪問的時候通過任何節點,通過ip + 端口號就能實現訪問
但是NodePort還存在一些缺陷
- 因為端口不能重復,所以每個端口只能使用一次,一個端口對應一個應用
- 實際訪問中都是用域名,根據不同域名跳轉到不同端口服務中
## Ingress和Pod關系
pod 和 ingress 是通過service進行關聯的,而ingress作為統一入口,由service關聯一組pod中

- 首先service就是關聯我們的pod
- 然后ingress作為入口,首先需要到service,然后發現一組pod
- 發現pod后,就可以做負載均衡等操作
## Ingress工作流程
在實際的訪問中,我們都是需要維護很多域名, a.com 和 b.com
然后不同的域名對應的不同的Service,然后service管理不同的pod

需要注意,ingress不是內置的組件,需要我們單獨的安裝
## 使用Ingress
步驟如下所示
- 部署ingress Controller【需要下載官方的】
- 創建ingress規則【對哪個Pod、名稱空間配置規則】
### 創建Nginx Pod
創建一個nginx應用,然后對外暴露端口
```bash
# 創建pod
kubectl create deployment web --image=nginx
# 查看
kubectl get pods
```
對外暴露端口
```bash
kubectl expose deployment web --port=80 --target-port=80 --type:NodePort
```
### 部署 ingress controller
下面我們來通過yaml的方式,部署我們的ingress,配置文件如下所示

這個文件里面,需要注意的是 hostNetwork: true,改成ture是為了讓后面訪問到
```bash
kubectl apply -f ingress-con.yaml
```
通過這種方式,其實我們在外面就能訪問,這里還需要在外面添加一層
```bash
kubectl apply -f ingress-con.yaml
```

最后通過下面命令,查看是否成功部署 ingress
```bash
kubectl get pods -n ingress-nginx
```

### 創建ingress規則文件
創建ingress規則文件,ingress-h.yaml

### 添加域名訪問規則
在windows 的 hosts文件,添加域名訪問規則【因為我們沒有域名解析,所以只能這樣做】

最后通過域名就能訪問

- Kubernetes簡介
- 搭建K8S集群前置知識
- 使用kubeadm方式搭建K8S集群
- 使用二進制方式搭建K8S集群
- Kubeadm和二進制方式對比
- Kubernetes集群管理工具kubectl
- Kubernetes集群YAML文件詳解
- Kubernetes核心技術Pod
- Kubernetes核心技術Controller
- Kubernetes核心技術Service
- Kubernetes控制器Controller詳解
- Kubernetes配置管理
- Kubernetes集群安全機制
- Kubernetes核心技術Ingress
- Kubernetes核心技術Helm
- Kubernetes持久化存儲
- Kubernetes集群資源監控
- Kubernetes搭建高可用集群
- Kubernetes容器交付介紹
- 使用kubeadm-ha腳本一鍵安裝K8S
- Kubernetes可視化界面kubesphere
- Kubernetes配置默認存儲類
- 使用Rancher搭建Kubernetes集群
- Kubernetes中的CRI