1 - 设置 Minikube 集群

如何设置 Minikube 集群

前提条件

启动 Minikube 集群

  1. 如果您的项目需要,设置默认的虚拟机。

    minikube config set vm-driver [driver_name]
    
  2. 启动集群。如果需要,使用 --kubernetes-version 指定 Kubernetes 1.13.x 或更新版本。

    minikube start --cpus=4 --memory=4096
    
  3. 启用 Minikube 仪表板和 ingress 插件。

    # 启用仪表板
    minikube addons enable dashboard
    
    # 启用 ingress
    minikube addons enable ingress
    

安装 Helm v3(可选)

如果您使用 Helm,安装 Helm v3 客户端

故障排除

负载均衡器的外部 IP 地址在 kubectl get svc 中未显示。

在 Minikube 中,kubectl get svc 中的 EXTERNAL-IP 显示为 <pending> 状态。此时,您可以运行 minikube service [service_name] 来打开服务,即使没有外部 IP 地址。

$ kubectl get svc
NAME                        TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)            AGE
...
calculator-front-end        LoadBalancer   10.103.98.37     <pending>     80:30534/TCP       25h
calculator-front-end-dapr   ClusterIP      10.107.128.226   <none>        80/TCP,50001/TCP   25h
...

$ minikube service calculator-front-end
|-----------|----------------------|-------------|---------------------------|
| NAMESPACE |         NAME         | TARGET PORT |            URL            |
|-----------|----------------------|-------------|---------------------------|
| default   | calculator-front-end |             | http://192.168.64.7:30534 |
|-----------|----------------------|-------------|---------------------------|
🎉  正在默认浏览器中打开 Kubernetes 服务 default/calculator-front-end...

相关链接

2 - 设置 KiND 集群

如何设置 KiND 集群

前提条件

安装和配置 KiND

参考 KiND 文档进行安装。

使用 Docker Desktop 时,请确保您已进行推荐的设置

配置并创建 KiND 集群

  1. 创建一个名为 kind-cluster-config.yaml 的文件,并粘贴以下内容:

    kind: Cluster
    apiVersion: kind.x-k8s.io/v1alpha4
    nodes:
    - role: control-plane
      kubeadmConfigPatches:
      - |
        kind: InitConfiguration
        nodeRegistration:
          kubeletExtraArgs:
            node-labels: "ingress-ready=true"
      extraPortMappings:
      - containerPort: 80
        hostPort: 8081
        protocol: TCP
      - containerPort: 443
        hostPort: 8443
        protocol: TCP
    - role: worker
    - role: worker
    

    此集群配置:

    • 启动一个由控制平面和两个工作节点组成的 Kubernetes 集群。
    • 方便将来设置 Ingress。
    • 将容器端口映射到主机。
  2. 运行 kind create cluster 命令,提供集群配置文件:

    kind create cluster --config kind-cluster-config.yaml
    

    预期输出

    Creating cluster "kind" ...
     ✓ Ensuring node image (kindest/node:v1.21.1) 🖼
     ✓ Preparing nodes 📦 📦 📦
     ✓ Writing configuration 📜
     ✓ Starting control-plane 🕹️
     ✓ Installing CNI 🔌
     ✓ Installing StorageClass 💾
     ✓ Joining worker nodes 🚜
    Set kubectl context to "kind-kind"
    You can now use your cluster with:
    
    kubectl cluster-info --context kind-kind
    
    Thanks for using kind! 😊
    

初始化并运行 Dapr

  1. 在 Kubernetes 中初始化 Dapr。

    dapr init --kubernetes
    

    Dapr 初始化完成后,您可以在集群上使用其核心组件。

  2. 验证 Dapr 组件的状态:

    dapr status -k
    

    预期输出

      NAME                   NAMESPACE    HEALTHY  STATUS   REPLICAS  VERSION  AGE  CREATED
      dapr-sentry            dapr-system  True     Running  1         1.5.1    53s  2021-12-10 09:27.17
      dapr-operator          dapr-system  True     Running  1         1.5.1    53s  2021-12-10 09:27.17
      dapr-sidecar-injector  dapr-system  True     Running  1         1.5.1    53s  2021-12-10 09:27.17
      dapr-dashboard         dapr-system  True     Running  1         0.9.0    53s  2021-12-10 09:27.17
      dapr-placement-server  dapr-system  True     Running  1         1.5.1    52s  2021-12-10 09:27.18
    
  3. 将端口转发到 Dapr 仪表板

    dapr dashboard -k -p 9999
    
  4. 访问 http://localhost:9999 检查设置是否成功。

在 Kind Kubernetes 集群上安装 metrics-server

  1. 获取 metrics-server 清单

    wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
    
  2. 向 components.yaml 文件添加不安全的 TLS 参数

    metadata:
       labels:
         k8s-app: metrics-server
     spec:
       containers:
       - args:
         - --cert-dir=/tmp
         - --secure-port=4443
         - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
         - --kubelet-use-node-status-port
         - --kubelet-insecure-tls   <==== 添加此项
         - --metric-resolution=15s
         image: k8s.gcr.io/metrics-server/metrics-server:v0.6.2
         imagePullPolicy: IfNotPresent
         livenessProbe:
           failureThreshold: 3
           httpGet:
             path: /livez
    
  3. 应用修改后的清单

    kubectl apply -f components.yaml
    

相关链接

3 - 配置 Azure Kubernetes 服务 (AKS) 集群

学习如何配置 Azure Kubernetes 集群

本指南将引导您安装 Azure Kubernetes 服务 (AKS) 集群。如果您需要更多信息,请参考 快速入门:使用 Azure CLI 部署 AKS 集群

先决条件

部署 AKS 集群

  1. 在终端中登录到 Azure。

    az login
    
  2. 设置您的默认订阅:

    az account set -s [your_subscription_id]
    
  3. 创建资源组。

    az group create --name [your_resource_group] --location [region]
    
  4. 创建 AKS 集群。若需使用特定版本的 Kubernetes,请使用 --kubernetes-version 参数(需 1.13.x 或更高版本)。

    az aks create --resource-group [your_resource_group] --name [your_aks_cluster_name] --node-count 2 --enable-addons http_application_routing --generate-ssh-keys
    
  5. 获取 AKS 集群的访问凭据。

    az aks get-credentials -n [your_aks_cluster_name] -g [your_resource_group]
    

AKS Edge Essentials

要使用 Azure Kubernetes 服务 (AKS) Edge Essentials 创建单机 K8s/K3s Linux-only 集群,您可以按照 AKS Edge Essentials 快速入门指南 进行操作。

相关链接

4 - 设置 Google Kubernetes Engine (GKE) 集群

设置 Google Kubernetes Engine 集群

前提条件

创建新集群

运行以下命令以创建 GKE 集群:

$ gcloud services enable container.googleapis.com && \
  gcloud container clusters create $CLUSTER_NAME \
  --zone $ZONE \
  --project $PROJECT_ID

更多选项请参阅:

私有 GKE 集群的 Sidecar 注入

私有集群的 Sidecar 注入需要额外步骤。

在私有 GKE 集群中,自动创建的主访问防火墙规则未开放 Dapr 所需的 4000 端口用于 Sidecar 注入。

查看相关的防火墙规则:

$ gcloud compute firewall-rules list --filter="name~gke-${CLUSTER_NAME}-[0-9a-z]*-master"

更新现有规则以允许 Kubernetes 主节点访问 4000 端口:

$ gcloud compute firewall-rules update <firewall-rule-name> --allow tcp:10250,tcp:443,tcp:4000

获取 kubectl 的凭据

运行以下命令以获取您的凭据:

$ gcloud container clusters get-credentials $CLUSTER_NAME \
    --zone $ZONE \
    --project $PROJECT_ID

安装 Helm v3(可选)

如果您使用 Helm,请安装 Helm v3 客户端

故障排除

Kubernetes 仪表板权限

如果您收到类似以下的错误消息:

configmaps is forbidden: User "system:serviceaccount:kube-system:kubernetes-dashboard" cannot list configmaps in the namespace "default"

请执行此命令:

kubectl create clusterrolebinding kubernetes-dashboard -n kube-system --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard

相关链接

5 - 配置弹性Kubernetes服务(EKS)集群

学习如何配置EKS集群

本指南将引导您配置一个弹性Kubernetes服务(EKS)集群。如果您需要更多信息,请参考创建一个Amazon EKS集群

前提条件

部署一个EKS集群

  1. 在终端中配置AWS凭证。

    aws configure
    
  2. 创建一个名为cluster-config.yaml的新文件,并将以下内容添加到其中,将[your_cluster_name][your_cluster_region][your_k8s_version]替换为相应的值:

    apiVersion: eksctl.io/v1alpha5
    kind: ClusterConfig
    
    metadata:
      name: [your_cluster_name]
      region: [your_cluster_region]
      version: [your_k8s_version]
      tags:
        karpenter.sh/discovery: [your_cluster_name]
    
    iam:
      withOIDC: true
    
    managedNodeGroups:
      - name: mng-od-4vcpu-8gb
        desiredCapacity: 2
        minSize: 1
        maxSize: 5
        instanceType: c5.xlarge
        privateNetworking: true
    
    addons:
      - name: vpc-cni 
        attachPolicyARNs:
          - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
      - name: coredns
        version: latest 
      - name: kube-proxy
        version: latest
      - name: aws-ebs-csi-driver
        wellKnownPolicies: 
          ebsCSIController: true
    
  3. 通过运行以下命令创建集群:

    eksctl create cluster -f cluster.yaml
    
  4. 验证kubectl上下文:

    kubectl config current-context
    

为sidecar访问和默认存储类添加Dapr要求:

  1. 更新安全组规则,创建端口4000的入站规则,以允许EKS集群与Dapr sidecar通信。

    aws ec2 authorize-security-group-ingress --region [your_aws_region] \
    --group-id [your_security_group] \
    --protocol tcp \
    --port 4000 \
    --source-group [your_security_group]
    
  2. 如果没有默认存储类,请添加一个:

kubectl patch storageclass gp2 -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

安装Dapr

运行以下命令安装Dapr:

dapr init -k

您应该看到以下响应:

⌛  Making the jump to hyperspace...
ℹ️  Note: To install Dapr using Helm, see here: https://docs.dapr.io/getting-started/install-dapr-kubernetes/#install-with-helm-advanced

ℹ️  Container images will be pulled from Docker Hub
✅  Deploying the Dapr control plane with latest version to your cluster...
✅  Deploying the Dapr dashboard with latest version to your cluster...
✅  Success! Dapr has been installed to namespace dapr-system. To verify, run `dapr status -k' in your terminal. To get started, go here: https://docs.dapr.io/getting-started

故障排除

访问权限

如果您遇到访问权限问题,请确保您使用的是创建集群时使用的相同AWS配置文件。如有需要,使用正确的配置文件更新kubectl配置。更多信息请参考这里

aws eks --region [your_aws_region] update-kubeconfig --name [your_eks_cluster_name] --profile [your_profile_name]

相关链接