## 安装K8S和Ingress Controller
安装K8S和Ingress Controller是使用Ingress的前提。下面是安装K8S和Ingress Controller的步骤:
| 步骤 | 操作 |
| ---- | ---- |
| 1 | 安装Kubernetes集群 |
| 2 | 安装Ingress Controller |
### 步骤1:安装Kubernetes集群
在安装K8S之前,首先需要准备好一台或多台Linux服务器,每台服务器上需要安装Docker。
1. 在所有服务器上安装Docker。
```shell
sudo apt-get update
sudo apt-get install docker.io -y
```
2. 在其中一台服务器上作为Master节点,初始化Kubernetes集群。
```shell
sudo kubeadm init --apiserver-advertise-address=
```
3. 在其他节点上加入Kubernetes集群。
```shell
sudo kubeadm join
```
4. 在Master节点上设置kubectl命令。
```shell
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
```
### 步骤2:安装Ingress Controller
在安装Ingress Controller之前,需要选择适合的Ingress Controller实现。这里选择使用Nginx作为Ingress Controller的实现。
1. 添加Nginx Ingress Controller的helm仓库。
```shell
helm repo add nginx-stable https://helm.nginx.com/stable
```
2. 更新helm仓库。
```shell
helm repo update
```
3. 安装Nginx Ingress Controller。
```shell
helm install my-ingress-controller nginx-stable/nginx-ingress
```
## 配置Ingress资源
安装完Ingress Controller后,可以开始配置Ingress资源。下面是配置Ingress资源的步骤:
| 步骤 | 操作 |
| ---- | ---- |
| 1 | 定义Ingress规则 |
| 2 | 应用Ingress资源 |
### 步骤1:定义Ingress规则
在定义Ingress规则之前,需要确保已经创建好了待访问的服务和服务端口。
1. 创建一个名为`my-ingress.yaml`的文件,并在其中定义Ingress规则。
```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-service
port:
number: 80
- path: /bar
pathType: Prefix
backend:
service:
name: bar-service
port:
number: 80
```
2. 将`my-ingress.yaml`文件中的规则应用到Kubernetes集群。
```shell
kubectl apply -f my-ingress.yaml
```
### 步骤2:应用Ingress资源
在应用Ingress资源之前,需要确保已经创建好了待访问的服务和服务端口,并且已经定义了Ingress规则。
1. 创建一个名为`my-service.yaml`的文件,并在其中定义待访问的服务。
```yaml
apiVersion: v1
kind: Service
metadata:
name: foo-service
spec:
selector:
app: foo-app
ports:
- port: 80
targetPort: 8080
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
name: bar-service
spec:
selector:
app: bar-app
ports:
- port: 80
targetPort: 8080
protocol: TCP
```
2. 将`my-service.yaml`文件中的服务应用到Kubernetes集群。
```shell
kubectl apply -f my-service.yaml
```
2. 检查Ingress资源的状态,确认是否已经成功应用了Ingress规则。
```shell
kubectl get ingress my-ingress
```
## 测试Ingress
在完成Ingress的安装和配置后,可以进行测试以确保Ingress正常工作。下面是测试Ingress的步骤:
1. 修改本地hosts文件,将`example.com`指向Kubernetes集群中任意一台节点的IP地址。
2. 在浏览器中访问`http://example.com/foo`,确认是否能够访问到`foo-service`服务。
3. 在浏览器中访问`http://example.com/bar`,确认是否能够访问到`bar-service`服务。
至此,你已经成功安装配置了K8S版本1.9.3下的Ingress。通过这些步骤,你可以实现使用Ingress进行HTTP和HTTPS请求的转发,将外部请求流量有效地分发到Kubernetes集群中的内部服务中。希望本文对你有所帮助!