基于kind构建kubernetes集群
使用之前需要先在本地主机安装环境。换句话说你必须在你的操作系统安装 kind 工具,例如,在系统可以使用安装:使用kind创建kubernetes集群下面的命令将会创建一个带有默认选项的集群:输出内容如下所示:如果我们想要通过创建多个集群怎么办呢?其实也考虑到了这种场景,通过在创建集群命令对的后面增加参数指定集群的标识名就可以了。输出内容如下:默认命令创建的集群名称是, 如果不指定标识没名称而使用
安装kind
使用kind
之前需要先在本地主机安装docker
环境。换句话说你必须在你的操作系统安装 kind 工具,例如,在mac
系统可以使用Homebrew
安装:
brew install kind
使用kind创建kubernetes集群
下面的命令将会创建一个带有默认选项的集群:
kind create cluster
输出内容如下所示:
$ kind create cluster
Creating cluster "kind" ...
✓ Ensuring node image (kindest/node:v1.24.0) 🖼
✓ Preparing nodes 📦
✓ Writing configuration 📜
✓ Starting control-plane 🕹️
✓ Installing CNI 🔌
✓ Installing StorageClass 💾
Set kubectl context to "kind-kind"
You can now use your cluster with:
kubectl cluster-info --context kind-kind
如果我们想要通过kind
创建多个集群怎么办呢?其实kind
也考虑到了这种场景,通过在创建集群命令对的后面增加name
参数指定集群的标识名就可以了。
kind create cluster --name multi-node
输出内容如下:
$ kind create cluster --name multi-node
Creating cluster "multi-node" ...
✓ Ensuring node image (kindest/node:v1.24.0) 🖼
✓ Preparing nodes 📦 📦 📦
✓ Writing configuration 📜
✓ Starting control-plane 🕹️
✓ Installing CNI 🔌
✓ Installing StorageClass 💾
✓ Joining worker nodes 🚜
Set kubectl context to "kind-multi-node"
You can now use your cluster with:
kubectl cluster-info --context kind-multi-node
Thanks for using kind! 😊
默认命令创建的集群名称是kind
, 如果不指定标识没名称而使用默认命令再次创建,你将得到一个ERROR
错误提示,大意是集群创建失败,原因名称为kind
的集群已经存在了。输出如下:
$ kind create cluster
ERROR: failed to create cluster: node(s) already exist for a cluster with the name "kind"
创建多节点的集群
就像你看到的一样,使用不带额外配置的创建集群命令创建出来的集群默认情况只是单节点的集群。如果我们使用如下的配置是可以创建出多节点集群的(你也可以增加不止一个控制面板来模拟高可用):
# three node (two wokers) cluster config
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
为了是配置生效,需要增加--config
参数指定配置文件所在路径和名称:
kind create cluster --name multi-node --config=multi-node.yaml
如果现在检查集群中节点的数量,你将会看到如下内容:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
multi-node-control-plane Ready control-plane 73m v1.24.0
multi-node-worker Ready <none> 72m v1.24.0
multi-node-worker2 Ready <none> 72m v1.24.0
检测集群环境
现在你已经知道如何创建单节点和多节点的集群了,是时候测试我们的应用是如何工作的了。例如,如果我们想要使用Docker Hub
仓库的镜像测试一个应用该如何做呢?
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: web-nginx
name: web-nginx
spec:
replicas: 3
selector:
matchLabels:
app: web-nginx
template:
metadata:
labels:
app: web-nginx
spec:
containers:
- image: nginx
name: nginx
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: web-nginx
spec:
selector:
app: web-nginx
type: NodePort
ports:
- port: 80
nodePort: 30080
我们需要创建一个带有额外参数的集群,目的是暴露我们可以在集群外部访问应用的端口,配置参数如下:
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
extraPortMappings:
- containerPort: 30080
hostPort: 30070
以上配置是将主机端口30070
映射到集群内容的30080
端口,当我们访问http://localhost:30070
时集群的控制面板会将请求转发到集群内容端口为30080
的容器处理。
通过执行如下命令使端口映射生效:
kind create cluster --config=config-with-port-mapping.yaml
现在就可以使用docker ps
命令查看容器暴露的端口和对应的映射关系了
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bfbc954b72cb kindest/node:v1.24.0 "/usr/local/bin/entr…" About an hour ago Up About an hour multi-node-worker
8dc51065e428 kindest/node:v1.24.0 "/usr/local/bin/entr…" About an hour ago Up About an hour multi-node-worker2
36e801dafef8 kindest/node:v1.24.0 "/usr/local/bin/entr…" About an hour ago Up About an hour 127.0.0.1:62517->6443/tcp, 0.0.0.0:30070->30080/tcp multi-node-control-plane
执行如下命令启动应用:
kubectl create -f nginx.yaml
现在你就可以通过http://localhost:30070
访问你本地集群的服务了
更多推荐
所有评论(0)