S. *_*. N 6 proxy docker kubernetes kubectl
我正在尝试使用Kubernetes运行我的应用程序我已经从名为deployment.yaml
服务的文件中创建了一个部署名称service.yaml
以下是内容deployment.yaml:
apiVersion: v1
kind: Pod
metadata:
name: kubectl-test
spec:
containers:
- name: kubectl-test
image: gcr.io/[my-name]/node-app:0.0.1
imagePullPolicy: Always
ports:
- containerPort: 8080
hostPort: 8080
Run Code Online (Sandbox Code Playgroud)
这是我的 services.yaml
kind: Service
apiVersion: v1
metadata:
#Service name
name: kubectl-test-node-app
spec:
selector:
app: kubectl-test-189010
ports:
- protocol: TCP
port: 8000
targetPort: 8000
type: LoadBalancer
Run Code Online (Sandbox Code Playgroud)
当我运行命令时kubectl get deployments,我可以看到:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
kubernetes-bootcamp 1 1 1 1 16m
Run Code Online (Sandbox Code Playgroud)
我可以通过使用看到我的服务kubectl get services,我可以看到:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubectl-test-node-app LoadBalancer 10.59.242.211 35.195.2.76 8000:31592/TCP 8m
kubernetes ClusterIP 10.59.240.1 <none> 443/TCP 1d
Run Code Online (Sandbox Code Playgroud)
当我试图访问EXTERNAL-IP:8000我无法看到我的应用程序,我没有得到任何错误,但我不会出现什么问题!
编辑
我必须使用以下方法创建部署:
`kubectl run kubernetes-bootcamp --image=[image-name] --port=8080`
Run Code Online (Sandbox Code Playgroud)
但没有这个命令
`kubectl create -f deployment.yaml`
Run Code Online (Sandbox Code Playgroud)
这与港口有关:8000:31592/TCP?
kubectl get pods
kubectl-test 1/1 Running 0 4h
kubernetes-bootcamp-1654181842-czwqg 1/1 Running 0 3h
Run Code Online (Sandbox Code Playgroud)
编辑
运行该命令kubectl describe services kubectl-test-node-app返回:
Name: kubectl-test-node-app
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=kubectl-test-189010
Type: LoadBalancer
IP: 10.59.242.211
LoadBalancer Ingress: 35.195.2.76
Port: <unset> 8000/TCP
TargetPort: 8000/TCP
NodePort: <unset> 31592/TCP
Endpoints: <none>
Session Affinity: None
External Traffic Policy: Cluster
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal CreatingLoadBalancer 58m service-controller Creating load balancer
Normal CreatedLoadBalancer 57m service-controller Created load balancer
Run Code Online (Sandbox Code Playgroud)
没有定义端点.我想这是问题所在?我该如何建立终点?
您的服务规范针对带有标签“app=kubectl-test-189010”的所有 pod,而您的 pod 规范中没有该标签。
您需要更新 pod 的元数据,以便它与服务规范中的选择器匹配:
metadata:
name: kubectl-test
app: kubectl-test-189010
Run Code Online (Sandbox Code Playgroud)
此外,您的服务接受端口 8000 上的连接,然后将其转发到 pod 上的端口 8000 (targetPort)。但 pod 侦听端口 8080(containerPort)。因此,应更改其中一个以匹配另一个 - targetPort 或 containerPort。
您可以在此处阅读有关在 Kubernetes 中配置服务的更多信息: https: //kubernetes.io/docs/concepts/services-networking/service/
| 归档时间: |
|
| 查看次数: |
267 次 |
| 最近记录: |