You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
$ kubectl cluster-info --context kind-k8s
Kubernetes control plane is running at https://127.0.0.1:51472
KubeDNS is running at https://127.0.0.1:51472/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-control-plane NotReady control-plane,master 2m20s v1.20.2
k8s-worker NotReady <none> 102s v1.20.2
k8s-worker2 NotReady <none> 103s v1.20.2
k8s-worker3 NotReady <none> 102s v1.20.2
由于还么有安装CNI插件,所以现在集群的状态是NotReady的。
这里可以通过docker ps命令来检查一个运行的Docker容器:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7f9fb033c531 kindest/node:v1.20.2 "/usr/local/bin/entr…" 12 minutes ago Up 6 minutes 127.0.0.1:55289->6443/tcp bigdata-control-plane
4ac75ba79030 kindest/node:v1.20.2 "/usr/local/bin/entr…" 12 minutes ago Up 6 minutes bigdata-worker2
5a27977d042a kindest/node:v1.20.2 "/usr/local/bin/entr…" 12 minutes ago Up 6 minutes bigdata-worker
8589f4d65b40 kindest/node:v1.20.2 "/usr/local/bin/entr…" 12 minutes ago Up 6 minutes bigdata-worker3
$ kubectl get all -n metallb-system
NAME READY STATUS RESTARTS AGE
pod/metallb-controller-5488f4c94b-8zmpn 1/1 Running 0 39s
pod/metallb-speaker-7w4tg 1/1 Running 0 39s
pod/metallb-speaker-jbjj9 1/1 Running 0 39s
pod/metallb-speaker-knnvj 1/1 Running 0 39s
pod/metallb-speaker-z76gd 1/1 Running 0 39s
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/metallb-speaker 4 4 4 4 4 kubernetes.io/os=linux 39s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/metallb-controller 1/1 1 1 39s
NAME DESIRED CURRENT READY AGE
replicaset.apps/metallb-controller-5488f4c94b 1 1 1 39s
Kind 介绍
Kind (Kubernetes IN Docker) 让你能够快速在本地计算机上运行 Kubernetes集群。 kind 要求你安装并配置好 Docker。
下面是使用kind创建一个多worker的Kubernetes集群,将下面的内容保存为
kind-config.yaml
:这里不使用默认的CNI,然后通过
kind
的命令行程序创建Kubernetes集群:kind 会自动的pull需要的docker镜像(镜像比较大),并创建由一个控制节点,3个工作节点组成的Kubernetes集群。
完毕之后,可以通过
kubectl
命令来查看集群的信息:由于还么有安装CNI插件,所以现在集群的状态是NotReady的。
这里可以通过
docker ps
命令来检查一个运行的Docker容器:然后需要将Master的kubeconfig备份出来,通过kubeconfig配置拷贝到相应管理节点,就可以通过
kubectl
命令来管理Kubernetes集群了。Helm3
Helm 是Kubernetes的包管理器,可以方便的查找、分享和使用软件构建 Kubernetes 应用包。
基于Helm,可以大大的优化基础运维建设及业务应用运维:
安装Helm3
这里参考官方文档 安装 helm
MetalLB
在Kubernetes中,Kubernets为一组提供相同功能的Pods提供了
Service
抽象,借助Service,应用可以方便的实现服务发现与负载均衡,并实现应用的零宕机升级。Service有三种类型:
<NodeIP>:NodePort
来访问该服务<NodeIP>:NodePort
然而kubernetes本身并没有实现LoadBalancer,所以Kubernetes的LoadBalancer类型的Service依赖于外部的云提供的Load Balancer。但是当我们把K8S部署在裸机上面,或者是测试环境时,仍然需要简单的LoadBalancer来验证工作,这个时候,开源的MetalLB就是一个不错的选择。
安装 MetalLB
下面需要为MetalLB创建一个IP的区段,用来给Service分配External IP, 这里采用了Kind的方式来创建Kubernetes集群,所以需要查看Kind创建的docker network的可用地址段,Metallb 将会在其中选取地址分配给服务:
$ docker network inspect -f '{{.IPAM.Config}}' kind [{172.24.0.0/16 172.24.0.1 map[]} {fc00:f853:ccd:e793::/64 map[]}]
通过上面的命令,可以看到我们的IP地址池为
172.22.26.210/20
,所以我们可以为MetalLB设该地址池里的某个IP段:将上面的内容保存到文件,然后执行
然后创建一个类型为
LoadBalancer
的Service当Pod成功运行之后,可以通过
kubectl get svc
命令查看分配的EXTERNAL-IP
地址:通过Helm安装 MetalLB
下面通过helm来安装MetalLB
用户需要在配置中提供一个地址池,Metallb 将会在其中选取地址分配给服务:
$ docker network inspect -f '{{.IPAM.Config}}' kind [{172.24.0.0/16 172.24.0.1 map[]} {fc00:f853:ccd:e793::/64 map[]}]
通过上面的命令,可以看到我们的IP地址池为
172.22.26.210/20
,所以我们可以为MetalLB设该地址池里的某个IP段:将上面文件保存到
./helm/metallb/values.yaml
文件中,然后通过helm命令安装:安装成功之后,可以通过
kubectl
查看运行状态参考
The text was updated successfully, but these errors were encountered: