第三节 本地来搭建集群

​ 如果是单节点的集群环境 我们可以使用 简单的方式 minikube 来本地测试 学习, 使用 mac 笔记本 可以使用 brew 直接安装即可. 如果需要多节点的集群, 本地又没有多台机器的情况下, 我们可以创建几台虚拟机来 进行模拟多个节点. 可以使用 multipass 来创建虚拟机, 在虚拟机中安装k3s 用于学习 k8s 足够了.

3.1 minikube 搭建单节点的环境

minikube 搭建单节点的Kubernetes环境 来学习,测试应用

在mac 笔记本 只需要安装

brew install  minikube 
minikube start 
# 查看集群状态
minikube status 


# 查看节点 
kubectl get nodes


# Stop your local cluster
minikube stop


# Delete your local cluster
minikube delete


# 删除minikube集群
minikube delete --all

3.2 安装多节点的集群环境

参考文档: https://geekhour.net/2023/12/23/kubernetes/

主要使用的两个工具 multipass ,k3s

使用k3sMultipass创建集群环境

multipass 使用这个可以创建轻量级虚拟机

官网: https://multipass.run/install

3.2.1 k3s 介绍

k3s 是一个轻量级的Kubernetes发行版,它是 Rancher Labs 推出的一个开源项目,
旨在简化Kubernetes的安装和维护,同时它还是CNCF认证的Kubernetes发行版。

k3s Lightweight Kubernetes. Easy to install, half the memory, all in a binary of less than 100 MB.

https://k3s.io/

3.2.2 安装k3s
# # 安装k3s的master节点
curl -sfL https://get.k3s.io | sh -

国内用户使用这个安装 k3s

curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
3.2.3 Multipass 介绍

Multipass是一个轻量级的虚拟机管理工具,可以用来在本地快速创建和管理虚拟机,相比于VirtualBox或者VMware这样的虚拟机管理工具,Multipass更加轻量快速,而且它还提供了一些命令行工具来方便我们管理虚拟机。
官方网址: https://Multipass.run/

3.2.4 安装multipass
brew install multipass
3.2.5 创建一个虚拟机

multipass 创建一个虚拟机

虚拟机名称k3s, cpu,内存 ,以及 硬盘信息指定相应大小.

multipass launch --name k3s --cpus 2 --memory 8g --disk 10g 
# 启动虚拟机
multipass start k3s  

# 停止虚拟机
multipass  stop k3s 

# 进入虚拟机
multipass shell k3s 

# 执行命令
multipass exec k3s -- ls -l 

# 查看虚拟机列表 以及对应的IP地址
multipass list 

# 删除虚拟机 
# multipass delete <虚拟机名称>, 删除名称为primaryd的虚拟机
multipass delete primary



# 查看help
multipass help 

设置免密登录, 首先进入虚拟机 给ubuntu 用户创建密码

multipass shell k3s 

passwd ubuntu 

# enter password twice
# xxxx  xxx 

# 配置免密登录
sudo vim /etc/ssh/sshd_config
# 修改两处
PasswordAuthentication yes
PermitRootLogin yes

# 保存退出


# 重启 ssh 服务
service restart ssh 

ssh-keygen 生成一对密钥

ssh-copy-id -i ~/.ssh/id_rsa.pub  'ubuntu@192.168.64.2'
3.2.6 创建和配置worker节点
# 进入虚拟机 master节点
multipass shell k3s 

TOKEN=$(multipass exec k3s sudo cat /var/lib/rancher/k3s/server/node-token)

MASTER_IP=$(multipass info k3s | grep IPv4 | awk '{print $2}')

echo $TOKEN
# 创建两个worker节点的虚拟机
multipass launch  --name worker1 --cpus 2 --memory 8G --disk 10G
multipass launch  --name worker2 --cpus 2 --memory 8G --disk 10G

使用刚刚的TOKENMASTER_IP来创建两个worker节点, 并把它们加入到集群中

for f in 1 2; do
     multipass exec worker$f -- bash -c "curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=\"https://$MASTER_IP:6443\" K3S_TOKEN=\"$TOKEN\" sh -"
 done

在k3s 虚拟机上面

# 查看节点信息
sudo kubectl get nodes


# api-versions 
sudo kubectl api-versions


# 查看集群信息
sudo kubectl cluster-info
修改deployment
# 编辑配置文件
kubectl edit deployment ng-deployment


# 修改副本数量
# 改为3 


# 查看pod
kubectl get pod

# 查看日志
kubectl logs -f  <pod-name>


# 如何进入到pod 容器中
# 进入名字为 nginx <pod-name>的Pod的容器中,并执行/bin/bash命令
kubectl exec  -it  nginx   -- /bin/bash

3.3 在线环境

https://killercoda.com/

3.4 常用命令 kubectl

https://geekhour.net/2023/12/23/kubernetes/

创建资源

kubectl create -h

kubectl run

kubectl run <NAME> --image=image 

# e.g. 创建并运行一个名字为nginx的Pod
kubectl run nginx --image=nginx


# 根据YAML配置文件或者标准输入创建资源
kubectl create RESOURCE
# e.g.
# 根据nginx.yaml配置文件创建资源
kubectl create -f nginx.yaml



# 创建一个deployment 
kubectl create deployment ng-deployment  --image=nginx

查看各种资源pod ,node ,deployment 等
# 登录到k3s主机 
multipass shell k3s 


# 查看节点信息
kubectl get node



# 查看Service
kubectl get svc


# 查看pods 
kubectl get pod


# 查看pod 所在的节点信息 IP 
kubectl get pod  -o wide


# 查看ReplicaSet
kubectl get rs           


# 查看Namespace
kubectl get ns



# 查看 deployment 
kubectl get deployment


# 查看replicaset 
kubectl get replicaset


 # 查看Ingress
kubectl get ing              



# 查看所有资源对象
kubectl get all


# 查看某一类型资源的详细信息
kubectl describe RESOURCE NAME
# e.g. 查看名字为nginx的Pod的详细信息
kubectl describe pod nginx



# 删除资源对象 
# 删除 deployment对象, 对象名称为 ng-deployment
kubectl delete deployment   ng-deployment
资源的修改,删除
# 创建一个deployment 
kubectl create deployment ng-deployment  --image=nginx


kubectl edit deployment  ng-deployment
# 修改 replicaset 为3 

# 查看deployment
kubectl get deployment 


# 删除某个资源
kubectl delete RESOURCE NAME
# e.g. 删除名字为nginx的Pod
kubectl delete pod nginx




# 删除某个资源的所有实例
kubectl delete RESOURCE --all
# e.g. 删除所有Pod
kubectl delete pod --all



# 根据YAML配置文件删除资源
kubectl delete -f FILENAME
# e.g. 根据nginx.yaml配置文件删除资源
kubectl delete -f nginx.yaml




# 设置某个资源的副本数
kubectl scale --replicas=COUNT RESOURCE NAME
# e.g. 设置名字为nginx的Deployment的副本数为3
kubectl scale --replicas=3 deployment/nginx




# 根据配置文件或者标准输入替换某个资源
kubectl replace -f FILENAME
# e.g. 根据nginx.yaml配置文件替换名字为nginx的Deployment
kubectl replace -f nginx.yaml
调试和交互
# 进入某个Pod的容器中
kubectl exec [-it] POD [-c CONTAINER] -- COMMAND [args...]
# e.g. 进入名字为nginx的Pod的容器中,并执行/bin/bash命令
kubectl exec -it nginx -- /bin/bash




# 查看某个Pod的日志
kubectl logs [-f] [-p] [-c CONTAINER] POD [-n NAMESPACE]
# e.g. 查看名字为nginx的Pod的日志
kubectl logs -f  nginx




# 将某个Pod的端口转发到本地
kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N]
# e.g. 将名字为nginx的Pod的80端口转发到本地的8080端口
kubectl port-forward nginx 8080:80




# 运行某个Pod的命令
kubectl run NAME --image=image -- COMMAND [args...]
# e.g. 运行名字为nginx的Pod
kubectl run nginx --image=nginx -- /bin/bash
分享快乐,留住感动. '2024-01-28 14:23:54' --frank
  • 11
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是用 Docker 搭建 RabbitMQ 集群的步骤: 1. 首先,确保已经安装了 Docker 和 Docker Compose。 2. 在本地创建一个新的文件夹,用于存储 RabbitMQ 的配置文件和数据。 3. 在该文件夹中创建一个名为 docker-compose.yml 的文件,并将以下内容复制到该文件中: ``` version: '3' services: rabbitmq-node1: image: rabbitmq:3.8-management-alpine hostname: rabbitmq-node1 environment: RABBITMQ_ERLANG_COOKIE: "secret_cookie" RABBITMQ_DEFAULT_USER: "admin" RABBITMQ_DEFAULT_PASS: "admin" ports: - "5672:5672" - "15672:15672" volumes: - ./data/node1:/var/lib/rabbitmq - ./config/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf networks: rabbitmq-network: aliases: - rabbitmq-node1 rabbitmq-node2: image: rabbitmq:3.8-management-alpine hostname: rabbitmq-node2 environment: RABBITMQ_ERLANG_COOKIE: "secret_cookie" RABBITMQ_DEFAULT_USER: "admin" RABBITMQ_DEFAULT_PASS: "admin" volumes: - ./data/node2:/var/lib/rabbitmq - ./config/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf networks: rabbitmq-network: aliases: - rabbitmq-node2 rabbitmq-node3: image: rabbitmq:3.8-management-alpine hostname: rabbitmq-node3 environment: RABBITMQ_ERLANG_COOKIE: "secret_cookie" RABBITMQ_DEFAULT_USER: "admin" RABBITMQ_DEFAULT_PASS: "admin" volumes: - ./data/node3:/var/lib/rabbitmq - ./config/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf networks: rabbitmq-network: aliases: - rabbitmq-node3 networks: rabbitmq-network: driver: bridge ``` 该文件定义了一个 RabbitMQ 集群,由三个节点组成。每个节点都有一个名称、一个主机名、一个环境变量(Erlang cookie、默认用户名和密码)、端口映射、数据卷和网络别名。该文件还定义了一个网络,用于连接三个节点。 4. 在该文件夹中创建一个名为 config 的文件夹,并在其中创建一个名为 rabbitmq.conf 的文件。将以下内容复制到该文件中: ``` cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config cluster_formation.classic_config.nodes.1 = rabbit@rabbitmq-node1 cluster_formation.classic_config.nodes.2 = rabbit@rabbitmq-node2 cluster_formation.classic_config.nodes.3 = rabbit@rabbitmq-node3 ``` 该文件定义了 RabbitMQ 集群的配置,包括节点发现方式和节点列表。 5. 在该文件夹中创建一个名为 data 的文件夹,用于存储 RabbitMQ 节点的数据。 6. 在终端中导航到该文件夹,并运行以下命令: ``` 回复:搭建rabbitmq集群需要使用Docker,可以参考Docker官方文档:https://docs.docker.com/engine/examples/rabbitmq/。好的,以下是如何使用Docker搭建RabbitMQ集群的步骤: 1. 首先,确保您已经在本地安装了Docker,并且已经在命令行中登录到了Docker。 2. 在命令行中输入以下命令,以在Docker中下载和运行RabbitMQ镜像: ``` docker run -d --name rabbitmq-node1 -p 5672:5672 -p 15672:15672 rabbitmq:3.8-management ``` 这将下载最新版本的RabbitMQ,并将其运行在Docker容器中。这里我们指定了两个端口,一个用于AMQP通信(5672),另一个用于Web管理界面(15672)。 3. 等待RabbitMQ容器启动后,您可以使用以下命令在另一个容器中运行第二个RabbitMQ节点: ``` docker run -d --name rabbitmq-node2 -p 5673:5672 -p 15673:15672 --link rabbitmq-node1:rabbit1 rabbitmq:3.8-management ``` 这将启动第二个RabbitMQ容器,并将其链接到第一个容器,以便它们可以互相通信。请注意,我们使用了不同的端口(5673和15673),以便避免与第一个节点的端口冲突。 4. 接下来,您可以使用以下命令启动第三个节点: ``` docker run -d --name rabbitmq-node3 -p 5674:5672 -p 15674:15672 --link rabbitmq-node1:rabbit1 --link rabbitmq-node2:rabbit2 rabbitmq:3.8-management ``` 同样,我们指定了不同的端口,并将此容器链接到前两个容器,以创建一个RabbitMQ集群。 5. 等待第三个节点启动后,您可以使用以下命令检查集群状态: ``` docker exec -it rabbitmq-node1 rabbitmqctl cluster_status ``` 这将显示集群中所有节点的状态。 恭喜!您已经成功地在Docker中部署了一个RabbitMQ集群

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值