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