---
## 第一步:准备工作
| 步骤 | 描述 |
| ---- | ---- |
| 1 | 安装和配置kubectl命令行工具 |
| 2 | 创建一个kubernetes集群 |
### 1. 安装和配置kubectl命令行工具:
```bash
# 可以通过以下命令安装kubectl
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
```
### 2. 创建一个kubernetes集群:
```bash
# 可以使用Minikube在本地创建一个单节点的kubernetes集群
minikube start
```
## 第二步:编写Docker容器镜像
| 步骤 | 描述 |
| ---- | ---- |
| 3 | 编写Dockerfile文件 |
| 4 | 构建Docker容器镜像 |
| 5 | 将容器镜像推送到镜像仓库 |
### 3. 编写Dockerfile文件:
```Dockerfile
# 使用基础镜像
FROM nginx:latest
# 拷贝本地文件到容器中
COPY ./index.html /usr/share/nginx/html/index.html
```
### 4. 构建Docker容器镜像:
```bash
# 在Dockerfile文件所在目录执行以下命令来构建镜像
docker build -t my-nginx .
```
### 5. 将容器镜像推送到镜像仓库:
```bash
# 推送镜像之前需要先登录到镜像仓库
docker login
docker tag my-nginx
docker push
```
## 第三步:创建k8s Deployment
| 步骤 | 描述 |
| ---- | ---- |
| 6 | 编写Deployment配置文件 |
| 7 | 创建Deployment |
### 6. 编写Deployment配置文件:
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-nginx
template:
metadata:
labels:
app: my-nginx
spec:
containers:
- name: my-nginx
image:
ports:
- containerPort: 80
```
### 7. 创建Deployment:
```bash
# 使用kubectl命令创建Deployment
kubectl apply -f my-nginx-deployment.yaml
```
## 第四步:创建k8s Service
| 步骤 | 描述 |
| ---- | ---- |
| 8 | 编写Service配置文件 |
| 9 | 创建Service |
### 8. 编写Service配置文件:
```yaml
apiVersion: v1
kind: Service
metadata:
name: my-nginx-service
spec:
selector:
app: my-nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
```
### 9. 创建Service:
```bash
# 使用kubectl命令创建Service
kubectl apply -f my-nginx-service.yaml
```
## 第五步:验证应用
| 步骤 | 描述 |
| ---- | ---- |
| 10 | 获取Service的外部IP |
| 11 | 访问应用 |
### 10. 获取Service的外部IP:
```bash
# 可以通过以下命令获取Service的外部IP
kubectl get service my-nginx-service
```
### 11. 访问应用:
在浏览器中输入获取到的外部IP,访问部署在kubernetes中的nginx应用。
---
通过以上步骤,你已经成功实现了一个“k8s 杀手级应用”的搭建和部署。希望这篇文章对你有所帮助,祝你在kubernetes的世界里越走越远!