登陆GKE集群并通过负载均衡器将NGINX的DaemonSet公开(个人备忘录)

你好。
我是Class Act基础设施业务部的大塚。

我最近对Kubernetes和Docker非常感兴趣,所以我将在这里分享我从中获得的知识和见解。为了玩弄这些技术,我在公司内部准备了一个免费的、需要规格的环境,我个人非常喜欢。但是,如果公司的网络发生故障,我就无法连接到这些环境,无法继续玩耍。这真是令人困扰。

因此,我想要在公有云上提供一个实践环境,所以我选择了Google云平台(GCP)进行尝试,并记录了我的操作体验。

用语可以用中文表达,只需选择一个选项:

谷歌云平台

Google云平台的简称。类似于AWS和Azure等公共云服务。

AWS允许在一年内免费使用限定的服务,而GCP允许免费使用$300的各项服务。

GCP提供了名为GKE的Kubernetes服务,这也可以免费使用$300。

AWS有EKS,但这超出了免费使用范围,需要支付费用。

 

谷歌云引擎 (Google Kubernetes Engine)

谷歌容器引擎 (Google Kubernetes Engine) 的简称。
一个神器,只需点击按钮便可为您准备好 Kubernetes 集群。

 

通过GCP登录,在GKE上构建集群。

我要登录页面。

 

gcp01
gcp02
gcp03
gcp04
gcp05
gcp06
gcp08
gcp09
gcp10
gcp11
gcp13
gcp14
gcp15
gcp16
gcp17

在浏览器上连接并公开DS于LB上。

GKE的k8s集群似乎是由两台服务器组成的。

ohtsuka_honban@cloudshell:~/yaml (western-antonym-386513)$ kubectl get node -o wide
NAME                                            STATUS   ROLES    AGE   VERSION            INTERNAL-IP   EXTERNAL-IP     OS-IMAGE                             KERNEL-VERSION   CONTAINER-RUNTIME
gk3-my-k8s-cluster-default-pool-65cbb045-3ww4   Ready    <none>   11m   v1.25.7-gke.1000   10.128.0.3    34.135.19.169   Container-Optimized OS from Google   5.15.65+         containerd://1.6.18
gk3-my-k8s-cluster-default-pool-ff5ff3b9-67pp   Ready    <none>   11m   v1.25.7-gke.1000   10.128.0.4    35.238.40.41    Container-Optimized OS from Google   5.15.65+         containerd://1.6.18

DS的yaml文件如下所示。

apiVersion: apps/v1 
kind: DaemonSet 
metadata: 
  name: nginx-ds 
spec: 
  selector: 
    matchLabels: 
      name: nginx 
  template: 
    metadata: 
      labels: 
        name: nginx 
    spec: 
      containers: 
      - name: nginx-container 
        image: nginx:latest

LB的yaml如下所示。

apiVersion: v1
kind: Service
metadata:
  name: nginx-lb 
spec:
  type: LoadBalancer
  selector:
    name: nginx
  ports:
  - protocol: TCP
    port: 60000
    targetPort: 80

我会部署这些。
负载均衡器的EXTERNAL-IP当前显示为pending,但只要经过一段时间,它将被分配并附加上去,所以我们需要等待。

ohtsuka_honban@cloudshell:~/yaml (western-antonym-386513)$ kubectl apply -f nginx-ds.yaml 
Warning: Autopilot set default resource requests for DaemonSet default/nginx-ds, as resource requests were not specified. See http://g.co/gke/autopilot-defaults
daemonset.apps/nginx-ds created
ohtsuka_honban@cloudshell:~/yaml (western-antonym-386513)$ kubectl apply -f nginx-lb.yaml 
service/nginx-lb created



ohtsuka_honban@cloudshell:~/yaml (western-antonym-386513)$ kubectl get all -o wide
NAME                 READY   STATUS    RESTARTS   AGE   IP              NODE                                            NOMINATED NODE   READINESS GATES
pod/nginx-ds-nl6c5   1/1     Running   0          31s   10.109.128.72   gk3-my-k8s-cluster-default-pool-ff5ff3b9-67pp   <none>           <none>
pod/nginx-ds-zggph   1/1     Running   0          31s   10.109.128.18   gk3-my-k8s-cluster-default-pool-65cbb045-3ww4   <none>           <none>



NAME                 TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)           AGE   SELECTOR
service/kubernetes   ClusterIP      10.110.0.1     <none>        443/TCP           26m   <none>
service/nginx-lb     LoadBalancer   10.110.1.206   <pending>     60000:32653/TCP   4s    name=nginx


NAME                      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE   CONTAINERS        IMAGES         SELECTOR
daemonset.apps/nginx-ds   2         2         2       2            2           <none>          32s   nginx-container   nginx:latest   name=nginx

等待数分钟后,将附加外部IP。
本次分配的IP是35.188.98.215。

ohtsuka_honban@cloudshell:~/yaml (western-antonym-386513)$ kubectl get svc -o wide
NAME         TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)           AGE   SELECTOR
kubernetes   ClusterIP      10.110.0.1     <none>          443/TCP           28m   <none>
nginx-lb     LoadBalancer   10.110.1.206   35.188.98.215   60000:32653/TCP   80s   name=nginx

在Web浏览器中搜索http://35.188.98.215:60000/。
我们可以看到可以连接到nginx的DeamonSet。
我们成功地通过负载均衡将DS在GKE上公开。

gcp18
gcp19
广告
将在 10 秒后关闭
bannerAds