在学习K8S常见组件和作用之前,我们首先需要了解Kubernetes是一个开源的容器编排引擎,能够实现对容器化应用的自动化部署、扩展和管理。在Kubernetes中,有一些常见的核心组件,每个组件都有其独特的作用和功能。下面我将逐步介绍这些组件及其作用,并给出代码示例。

### K8S常见组件和作用

#### 流程图

| 步骤 | 描述 |
|------|------|
| 1 | 安装Kubernetes集群 |
| 2 | 部署POD |
| 3 | 使用服务(Service)暴露应用 |
| 4 | 使用Ingress暴露HTTP和HTTPS服务 |

#### 代码示例

1. 安装Kubernetes集群

安装Kubernetes集群的过程可以参考官方文档或者使用工具如kubeadm来进行快速部署。

2. 部署POD

在Kubernetes中,Pod是最小的部署单元,可以包含一个或多个容器。以下是一个部署Nginx Pod的示例YAML文件:

```yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
```

在上面的示例中,我们定义了一个名称为nginx-pod的Pod,其中包含一个名为nginx的容器,该容器使用nginx:latest镜像,并监听80端口。

3. 使用服务(Service)暴露应用

Kubernetes中的Service可以实现对Pod的负载均衡和服务发现。以下是一个创建NodePort类型Service的示例:

```yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: NodePort
```

在上面的示例中,我们创建了一个名称为nginx-service的Service,指定了selector为app: nginx,端口为80,并将Service类型设置为NodePort。

4. 使用Ingress暴露HTTP和HTTPS服务

Ingress是Kubernetes中一个用于管理外部访问的资源,可以实现HTTP和HTTPS服务的路由。以下是一个创建Ingress资源的示例:

```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80
```

在上面的示例中,我们创建了一个名称为nginx-ingress的Ingress资源,指定了域名为example.com,并将HTTP请求路由到nginx-service的80端口。

通过以上步骤,我们可以实现在Kubernetes中部署应用、暴露服务并实现外部访问。希望这篇文章对你有所帮助,如果有任何问题或者疑惑,欢迎随时向我提问。祝你在学习Kubernetes的路上越走越远!