Skip to main content

Kubernetes Tutorial for Beginners

https://www.youtube.com/watch?v=X48VuDVv0do&list=PL-RExUajdVAG3mwK33IrlRqijcH7nlsRL&ab_channel=TechWorldwithNana

alt text

alt text

alt text

alt text

alt text

Create Secret

alt text

alt text

alt text

alt text

应用 Secret

alt text

comfigmap

alt text

配置comfigmap

alt text

应用到k8s中

alt text

alt text

外部端口

alt text

alt text

分配ip

alt text

不能直接给ip?

当你在 Kubernetes 中创建一个 LoadBalancer 类型的服务时,Kubernetes 会向云提供商(如 AWS、GCP、Azure)请求一个外部负载均衡器,并为该服务分配一个外部 IP 地址。然而,如果你在本地集群(如 Minikube 或 Kind)上运行 Kubernetes,或者你的云提供商还没有分配外部 IP 地址,你可能需要手动执行一些操作来访问服务。

确认 LoadBalancer 服务的外部 IP

首先,检查 LoadBalancer 服务的状态,看看是否已经分配了外部 IP 地址:

kubectl get svc mongo-express-service

输出可能类似于:

NAME                  TYPE           CLUSTER-IP       EXTERNAL-IP      PORT(S)        AGE
mongo-express-service LoadBalancer 10.96.178.16 <pending> 80:30689/TCP 6s

如果 EXTERNAL-IP 显示为 <pending>,则表示外部 IP 地址还没有分配。

在本地集群中使用 LoadBalancer 服务

如果你在本地集群上运行 Kubernetes(如 Minikube 或 Kind),可以使用以下方法来访问 LoadBalancer 服务:

1. Minikube

使用 Minikube 的 minikube tunnel 命令来暴露 LoadBalancer 服务:

minikube tunnel

运行该命令后,Minikube 会创建一个本地网络隧道,并分配一个外部 IP 地址给 LoadBalancer 服务。重新检查服务状态:

kubectl get svc mongo-express-service

现在你应该能够看到一个分配的外部 IP 地址。

2. Kind

Kind 不直接支持 LoadBalancer 服务,但你可以使用 kubectl port-forward 命令来临时访问服务:

kubectl port-forward svc/mongo-express-service 8081:80

然后你可以通过 http://localhost:8081 访问服务。

在云环境中使用 LoadBalancer 服务

如果你在云环境中运行 Kubernetes,但 LoadBalancer 服务没有分配外部 IP 地址,你可以尝试以下步骤:

1. 检查云提供商的配置

确保你的 Kubernetes 集群配置正确,并且云提供商支持 LoadBalancer 服务。检查云提供商的文档,确认相关配置是否正确。

2. 手动分配静态 IP

在某些云提供商中,你可以手动分配一个静态 IP 地址,并将其绑定到服务。以下是一个示例,以 GCP 为例:

  1. 在 GCP 控制台中,分配一个静态 IP 地址。
  2. 编辑服务的 YAML 文件,将静态 IP 地址添加到 loadBalancerIP 字段:
apiVersion: v1
kind: Service
metadata:
name: mongo-express-service
spec:
type: LoadBalancer
loadBalancerIP: YOUR_STATIC_IP
ports:
- port: 80
targetPort: 8081
selector:
app: mongo-express
  1. 应用更改:
kubectl apply -f your-service.yaml

总结

  • 确认 LoadBalancer 服务的状态,检查是否已经分配了外部 IP 地址。
  • 在本地集群中,使用 Minikube 的 minikube tunnel 命令或 Kind 的 kubectl port-forward 命令来访问服务。
  • 在云环境中,确保云提供商配置正确,或者手动分配静态 IP 地址并绑定到服务。

通过这些步骤,你可以确保 LoadBalancer 服务在 Kubernetes 集群中正确配置,并且可以从外部访问。

minikube

要在 Minikube 中访问 LoadBalancer 类型的服务,你可以使用 Minikube 提供的 minikube service 命令。这个命令会为你打开一个浏览器窗口,并访问指定的服务。如果你不希望打开浏览器窗口,你也可以使用 --url 选项来获取服务的 URL。

假设你的服务名称是 mongo-express-service,你可以使用以下命令来访问它:

使用 minikube service 命令

minikube service mongo-express-service

这个命令会自动查找服务的外部 IP 地址和端口,并在默认浏览器中打开一个窗口来访问该服务。

获取服务的 URL

如果你只想获取服务的 URL,而不打开浏览器,可以使用 --url 选项:

minikube service mongo-express-service --url

这个命令会输出服务的 URL,例如:

http://192.168.99.100:31234

你可以在浏览器中手动访问这个 URL。

检查服务状态

如果你遇到问题,可以检查服务的状态和详细信息:

kubectl get svc mongo-express-service

输出示例:

NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
mongo-express-service LoadBalancer 10.96.178.16 <pending> 80:30689/TCP 6s

如果 EXTERNAL-IP 显示为 <pending>,则表示 Minikube 还没有分配外部 IP 地址。在这种情况下,minikube service 命令会自动处理并提供一个可访问的 URL。

使用 kubectl port-forward 作为替代方案

如果你不想使用 minikube service 命令,或者需要更细粒度的控制,你也可以使用 kubectl port-forward 命令来访问服务:

kubectl port-forward svc/mongo-express-service 8081:80

然后你可以通过 http://localhost:8081 访问服务。

总结

通过使用 minikube service 命令,你可以轻松地访问在 Minikube 中运行的 LoadBalancer 类型的服务。这个命令会自动处理外部 IP 地址和端口,并在浏览器中打开服务。如果你只需要获取 URL,可以使用 --url 选项。对于更细粒度的控制,可以使用 kubectl port-forward 命令。

alt text

namespace

alt text

ingress

alt text

alt text

alt text

alt text

alt text

alt text

alt text

alt text

alt text

这个可以做微前端?

路径

alt text

子域名

alt text

alt text

Configuring TLS Certificate

alt text

alt text

helm

alt text

alt text

alt text

share chart

alt text

values

alt text

different environments

alt text

values override

alt text

Release Management

alt text

alt text

persist data

alt text

alt text

alt text

nfs

alt text

google

alt text

alt text

alt text

alt text

PVC

alt text

alt text alt text

alt text

alt text

alt text

storageClass

alt text

alt text

alt text

alt text

staful

alt text

example

alt text

alt text

Deployment vs StatefulSet

alt text

alt text

alt text

alt text alt text alt text

alt text

alt text alt text

svc

What is a Service and when we need it?

alt text

alt text

alt text

ClusterlP Services

alt text

alt text

Service Communication: selector

alt text alt text

alt text

Service Communication: selector

alt text

alt text

alt text

alt text

alt text

alt text

alt text

Multi-Port Services

alt text

alt text

Headless Services

alt text

alt text

NodePort Services

NodePort and ClusterIP Service are created automatically!

alt text alt text alt text alt text

LoadBalancer Services

alt text

alt text

alt text

alt text