### K8s如何访问集群
#### 流程概述:
| 步骤 | 描述 |
| ---- | ---- |
| 1 | 创建Deployment和Service |
| 2 | 获取Service的Cluster IP |
| 3 | 创建一个Pod用于测试连接 |
| 4 | 通过Pod测试连接Service |
#### Step 1: 创建Deployment和Service
首先,我们需要创建一个Deployment和一个Service,这样我们就可以在集群内部部署我们的应用程序,并且使其可以被其他应用程序访问到。
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: nginx
---
apiVersion: v1
kind: Service
metadata:
name: myapp-svc
spec:
selector:
app: myapp
ports:
- port: 80
targetPort: 80
```
上面的代码片段中,我们定义了一个名为`myapp`的Deployment,它会运行3个副本的nginx容器;同时我们还创建了一个名为`myapp-svc`的Service,它将暴露Deployment中的Pod。
#### Step 2: 获取Service的Cluster IP
接下来,我们需要获取Service的Cluster IP,这个IP地址将会被其他应用程序用来访问我们的Service。
```bash
kubectl get svc myapp-svc
```
运行上面的命令,您将会看到类似如下的输出:
```
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
myapp-svc ClusterIP 10.102.35.129
```
在这个例子中,`10.102.35.129` 就是我们的Service的Cluster IP。
#### Step 3: 创建一个Pod用于测试连接
接下来,我们需要创建一个Pod,用于测试连接到我们的Service。在这个Pod中,我们可以使用`curl`命令来测试连接。
```yaml
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
containers:
- name: test-pod
image: busybox
command: ['sh', '-c', 'curl 10.102.35.129']
```
上面的代码片段中,我们定义了一个名为`test-pod`的Pod,它运行了一个busybox容器,并在启动时执行了`curl`命令来访问之前获取到的Service的Cluster IP。
#### Step 4: 通过Pod测试连接Service
最后,我们可以通过执行以下命令来创建并查看测试Pod的日志,以确保我们的应用程序可以访问到Service。
```bash
kubectl apply -f test-pod.yaml
kubectl logs test-pod
```
如果一切正常,您将会看到测试Pod的日志中包含了成功的连接信息。
通过以上步骤,我们成功的让K8s集群中的应用程序能够访问到集群内的服务。希望这篇文章可以帮助您更好地理解和使用Kubernetes。