## 1. 概述
- 在此示例中,我们使用了[kubernetes](https://github.com/Kubernetes)的[基本部署](https://github.com/Kubernetes/samples/blob/master/deployments/basic/)和[基本服务](https://github.com/Kubernetes/samples/blob/master/services/basic/)示例来演示如何使用kubectl命令行工具部署一个简单的web应用程序。
- 在此示例中,我们使用[nginx](https://github.com/nginx/nginx)作为服务器运行的web应用程序。
- 通过执行kubectl命令来部署和管理应用程序。
- 通过使用kubectl exec命令运行容器中的命令行工具,可以查看和修改应用程序。
## 2. 环境搭建
- 安装kubernetes:参考[下文](https://github.com/Kubernetes/samples/blob/master/README.md#installing-the-tools)。
- 从源代码安装nginx:
```css
sudo apt-get update
sudo apt-get install build-essential libssl-dev zlib1g-dev
cd /usr/src/nginx && ./configure --with-http_ssl_module --add=https://github.com/arut/nginx-ssl-conf.git && make
sudo rm -rf /etc/nginx/ && sudo cp -i /usr/src/nginx/conf/default /etc/nginx/default
sudo systemctl enable nginx && sudo systemctl start nginx
```
- 从源代码安装kubernetes:
```csharp
git clone https://github.com/kubernetes-samples/node-deployments.git
cd node-deployments
kubectl create cluster mycluster --config minion --minion-ip 192.168.100.50
kubectl config use-cluster mycluster
kubectl apply -f deployments/replicaSet.yaml
```
## 3. 部署
- 创建一个文件夹,保存下面的代码:
```makefile
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
```
- 创建一个文件夹,保存下面的代码:
```makefile
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
```
- 创建一个文件夹,保存下面的代码:
```makefile
apiVersion: v1
kind: Ingress
metadata:
name: nginx-ingress
spec:
rules:
- host: ingress.example.com
http:
paths:
- path: /
backend:
service:
name: nginx
port:
name: http
```
- 创建一个文件夹,保存下面的代码:
```makefile
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
```
- 创建一个文件夹,保存下面的代码:
```makefile
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
```
- 创建一个文件夹,保存下面的代码:
```makefile
apiVersion: v1
kind: Ingress
metadata:
name: nginx-ingress
spec:
rules:
- host: ingress.example.com
http:
paths:
- path: /
backend:
service:
name: nginx
port:
name: http
```
- 创建一个文件夹,保存下面的代码:
```makefile
apiVersion: v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
```
- 创建一个文件夹,保存下面的代码:
```makefile
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
```
- 创建一个文件夹,保存下面的代码:
```makefile
apiVersion: v1
kind: Ingress
metadata:
name: nginx-ingress
spec:
rules:
- host: ingress.example.com
http:
paths:
- path: /
backend:
service:
name: nginx
port:
name: http
```
- 创建一个文件夹,保存下面的代码:
```makefile
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
```
- 创建一个文件夹,保存下面的代码:
```makefile
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
```
- 创建一个文件夹,保存下面的代码:
```makefile
apiVersion: v1
kind: Ingress
metadata:
name: nginx-ingress
spec:
rules:
- host: ingress.example.com
http:
paths:
- path: /
backend:
service:
name: nginx
port:
name: http
```
- 创建一个文件夹,保存下面的代码:
```makefile
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
```
- 创建一个文件夹,保存下面的代码:
```makefile
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
```
- 创建一个文件夹,保存下面的代码:
```makefile
apiVersion: v1
kind: Ingress
metadata:
name: nginx-ingress
spec:
rules:
- host: ingress.example.com
http:
paths:
- path: /
backend:
service:
name: nginx
port:
name: http
```
- 创建一个文件夹,保存下面的代码:
```makefile
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
```
- 创建一个文件夹,保存下面的代码:
```makefile
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
```
- 创建一个文件夹,保存下面的代码:
```makefile
apiVersion: v1
kind: Ingress
metadata:
name: nginx-ingress
spec:
rules:
- host: ingress.example.com
http:
paths:
- path: /
backend:
service:
name: nginx
port:
name: http
```