Я использую Docker и Minikube на Windows для изучения k8s, но мне не удалось развернуть мое первое приложение.
Я выполнил следующие команды:
-
kubectl run testapp --image=saphyra/testapp:latest --port=8080
kubectl expose deployment testapp --type=NodePort
minikube service testapp
С помощью команды minikube dashboard
я вижу, что модуль создан и работает, я вижу журналы, и он говорит, что Tomcat запустился на порту 8080, как и ожидалось.
Так что, похоже, все в порядке.
Но как я могу вызвать конечную точку (из браузера) службы, которую я запустил ? В учебнике , за которым я следовал (и во многих других учебниках YouTube), теперь говорится, что я должен иметь возможность вызывать конечные точки приложения.
Что мне не хватает? Как я могу получить доступ к своему приложению?
Редактировать:
Опишите результат
kubectl describe svc testapp >
Name: testapp
Namespace: default
Labels: run=testapp
Annotations: <none>
Selector: run=testapp
Type: NodePort
IP: 10.110.10.61
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
NodePort: <unset> 31612/TCP
Endpoints: 172.18.0.4:8080
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
Журналы прокси-кубов:
server_others.go:323] Unknown proxy mode "", assuming iptables proxy
node.go:135] Successfully retrieved node IP: 172.17.0.2
server_others.go:145] Using iptables Proxier.
server.go:571] Version: v1.17.3
conntrack.go:100] Set sysctl 'net/netfilter/nf_conntrack_max' to 524288
conntrack.go:52] Setting nf_conntrack_max to 524288
conntrack.go:127] sysfs is not writable: {Device:sysfs Path:/sys Type:sysfs Opts:[ro nosuid nodev noexec relatime] Freq:0 Pass:0} (mount options are [ro nosuid nodev noexec relatime])
conntrack.go:100] Set sysctl 'net/netfilter/nf_conntrack_tcp_timeout_established' to 86400
conntrack.go:100] Set sysctl 'net/netfilter/nf_conntrack_tcp_timeout_close_wait' to 3600
config.go:313] Starting service config controller
shared_informer.go:197] Waiting for caches to sync for service config
config.go:131] Starting endpoints config controller
shared_informer.go:197] Waiting for caches to sync for endpoints config
shared_informer.go:204] Caches are synced for service config
shared_informer.go:204] Caches are synced for endpoints config
РЕДАКТИРОВАТЬ 2
kubectl get svc testapp -o yaml
>
apiVersion: v1
kind: Service
metadata:
creationTimestamp: "2020-03-25T17:03:57Z"
labels:
run: testapp
name: testapp
namespace: default
resourceVersion: "3454"
selfLink: /api/v1/namespaces/default/services/testapp
uid: 048d05df-eaad-4d4b-845f-d98b222fe101
spec:
clusterIP: 10.110.10.61
externalTrafficPolicy: Cluster
ports:
- nodePort: 31612
port: 8080
protocol: TCP
targetPort: 8080
selector:
run: testapp
sessionAffinity: None
type: NodePort
status:
loadBalancer: {}
kubectl get pod testapp-c565bfccc-xht6j -o yaml
>
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: "2020-03-25T17:03:52Z"
generateName: testapp-c565bfccc-
labels:
pod-template-hash: c565bfccc
run: testapp
name: testapp-c565bfccc-xht6j
namespace: default
ownerReferences:
- apiVersion: apps/v1
blockOwnerDeletion: true
controller: true
kind: ReplicaSet
name: testapp-c565bfccc
uid: 21e2c9ab-3771-482f-8849-71754aaf5ff6
resourceVersion: "3491"
selfLink: /api/v1/namespaces/default/pods/testapp-c565bfccc-xht6j
uid: c4dfdcb6-d050-4c44-99d1-6881bc39f805
spec:
containers:
- image: saphyra/testapp:latest
imagePullPolicy: Always
name: testapp
ports:
- containerPort: 8080
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: default-token-689j9
readOnly: true
dnsPolicy: ClusterFirst
enableServiceLinks: true
nodeName: m01
priority: 0
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccount: default
serviceAccountName: default
terminationGracePeriodSeconds: 30
tolerations:
- effect: NoExecute
key: node.kubernetes.io/not-ready
operator: Exists
tolerationSeconds: 300
- effect: NoExecute
key: node.kubernetes.io/unreachable
operator: Exists
tolerationSeconds: 300
volumes:
- name: default-token-689j9
secret:
defaultMode: 420
secretName: default-token-689j9
status:
conditions:
- lastProbeTime: null
lastTransitionTime: "2020-03-25T17:03:52Z"
status: "True"
type: Initialized
- lastProbeTime: null
lastTransitionTime: "2020-03-25T17:04:12Z"
status: "True"
type: Ready
- lastProbeTime: null
lastTransitionTime: "2020-03-25T17:04:12Z"
status: "True"
type: ContainersReady
- lastProbeTime: null
lastTransitionTime: "2020-03-25T17:03:52Z"
status: "True"
type: PodScheduled
containerStatuses:
- containerID: docker://9a3ddc83df779bb4dc4b88718d82f7065d2dc647360fa200b4815ecc260a7ed4
image: saphyra/testapp:latest
imageID: docker-pullable://saphyra/testapp@sha256:b328a874297521f35c84a37cde160e23a39d6a12c7184dbe3c88ff0250b05df6
lastState: {}
name: testapp
ready: true
restartCount: 0
started: true
state:
running:
startedAt: "2020-03-25T17:04:11Z"
hostIP: 172.17.0.2
phase: Running
podIP: 172.18.0.4
podIPs:
- ip: 172.18.0.4
qosClass: BestEffort
startTime: "2020-03-25T17:03:52Z"