openstack平台搭建笔记(容器云)

2023-11-20

openstack平台搭建笔记(容器云)

一、根据要求准备好配置环境

节点IP 角色 备注
192.168.100.30 Master Kubernetes 集群 master 节点、Harbor 仓库节点
192.168.100.31 Worker Kubernetes 集群 node 节点

ps:为方便部署,建议保持所有节点密码一致,完成后再统一修改节点密码。

完成服务器部署后进入服务器,编辑/etc/sysconfig/network-scripts/ifcfg-ens33文件

vi /etc/sysconfig/network-scripts/ifcfg-ens33

Master

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.30
PREFIX=24
GATEWAY=192.168.100.1

Worker

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.31
PREFIX=24
GATEWAY=192.168.100.1

完成编辑后重启 network 服务

systemctl restart network
ip a  (查看网卡信息是否修改成功)

Master

image-20230627154149913

Worker

image-20230627165409488

之后将镜像文件通过SecureFX传输到Master root目录下,进行挂载。

mount -o loop chinaskills_cloud_paas_v2.0.2.iso /mnt/ (挂载镜像到/mnt/目录下)
cp -rvf /mnt/* /opt/ (将内容复制到/opt/目录下)
umount /mnt/ (解除挂载)

二、安装kubeeasy

在 master 节点安装 kubeeasy 工具:

mv /opt/kubeeasy /usr/bin/kubeeasy 

三、安装依赖包

此步骤主要完成 docker-ce、git、unzip、vim、wget 等工具的安装。

在 master 节点执行以下命令完成依赖包的安装:

kubeeasy install depend --host 192.168.100.30,192.168.100.31 --user root --password 000000 --offline-file /opt/dependencies/base-rpms.tar.gz
--host:所有主机节点 IP,如:10.24.1.2-10.24.1.10,中间用“-”隔开,表示 10.24.1.2到 10.24.1.10 范围内的所有 IP。若 IP 地址不连续,则列出所有节点 IP,用逗号隔开,如:10.24.1.2,10.24.1.7,10.24.1.9。
--user:主机登录用户,默认为 root
--password:主机登录密码,所有节点需保持密码一致。
--offline-file:离线安装包路径。

ps:可通过命令“tail -f /var/log/kubeinstall.log”查看安装详情或排查错误。

image-20230628093449851

四、配置 SSH 免密钥

在 master 节点执行以下命令完成集群节点的连通性检测:

kubeeasy check ssh --host 192.168.100.30,192.168.100.31 --user root --password 000000

在 master 节点执行以下命令完成集群所有节点间的免密钥配置:

kubeeasy create ssh-keygen --master 192.168.100.30 --worker 192.168.100.31 --user root --password 000000

image-20230628093717592

–mater 参数后跟 master 节点 IP,–worker 参数后跟所有 worker 节点 IP。

五、部署 Kubernetes 集群

在 master 节点执行以下命令部署 Kubernetes 集群:

kubeeasy install kubernetes --master 192.168.100.30 --worker 192.168.100.31 --user root --password 000000 --version 1.22.1 --offline-file /opt/kubernetes.tar.gz 

–master:Master 节点 IP。

–worker:Node 节点 IP,如有多个 Node 节点用逗号隔开。

–version:Kubernetes 版本,此处只能为 1.22.1

ps:可通过命令“tail -f /var/log/kubeinstall.log”查看安装详情或排查错误。

image-20230628094515249

部署完成后查看集群状态:

kubectl cluster-info 

image-20230628094624923

查看节点负载情况:

kubectl top nodes --use-protocol-buffers

image-20230628095136310

六、登录一道云云开发平台

在浏览器上访问一道云云开发平台(http://master_IP:30080),如图所示:

image-20230628095739445

设置 admin 用户的密码(000000000000),并登录平台,如图所示:

image-20230628095834064

点击集群名称查看集群概览,如图所示:

image-20230628095911343

七、部署 KubeVirt 集群

在 master 节点执行以下命令安装KubeVirt:

kubeeasy add --virt kubevirt

image-20230628100354536

查看 Pod:

kubectl -n kubevirt get pods

image-20230628100455136

八、部署 Istio

在 master 节点执行以下命令进行 Istio 服务网格环境的安装:

kubeeasy add --istio istio

image-20230628100815258

查看Pod:

[root@master ~]  kubectl -n istio-system get pods
NAME                                   READY   STATUS    RESTARTS   AGE
grafana-6ccd56f4b6-4hxgm               1/1     Running   0          2m6s
istio-egressgateway-7f4864f59c-gbrdz   1/1     Running   0          2m20s
istio-ingressgateway-55d9fb9f-d79t2    1/1     Running   0          2m20s
istiod-555d47cb65-gb6q8                1/1     Running   0          2m24s
jaeger-5d44bc5c5d-89flh                1/1     Running   0          2m5s
kiali-9f9596d69-p2rmc                  1/1     Running   0          2m5s
prometheus-64fd8ccd65-gkjlw            2/2     Running   0          2m5s

查看Istio版本信息

[root@master ~] istioctl version
client version: 1.12.0
control plane version: 1.12.0
data plane version: 1.12.0 (2 proxies)

九、Istio可视化

访问 Grafana(http://master_IP:33000),如图所示:

image-20230628101022329

访问 Prometheus(http://master_IP:30090),如图所示:

image-20230628101051890

查看 Targets,如图所示:

image-20230628101112501

访问 Jaeger(http://master_IP:30686),如图所示:

image-20230628101151245

访问 Kiali(http://master_IP:20001),如图所示:

image-20230628101231989

九、部署 Harbor 仓库

在 master 节点执行以下命令进行 Harbor 仓库的安装:

kubeeasy add --registry harbot

image-20230628101538737

部署完成后查看Harbor仓库状态:

[root@master ~]# systemctl status harbor
● harbor.service - Harbor
   Loaded: loaded (/usr/lib/systemd/system/harbor.service; enabled; vendor preset: disabled)
   Active: active (running) since 三 2023-06-28 10:15:21 CST; 28s ago
     Docs: http://github.com/vmware/harbor
 Main PID: 76364 (docker-compose)
    Tasks: 15
   Memory: 14.2M
   CGroup: /system.slice/harbor.service
           └─76364 /usr/local/bin/docker-compose -f /opt/harbor/docker-compose.yml up

628 10:15:30 k8s-master-node1 docker-compose[76364]: registryctl        | 172.18.0.8 - - [28/Jun/2023:02:15:30 +0000] "GET /api/health HTTP/1.1" 200 9
628 10:15:30 k8s-master-node1 docker-compose[76364]: harbor-portal      | 172.18.0.8 - - [28/Jun/2023:02:15:30 +0000] "GET / HTTP/1.1" 200 532 "-" "Go-http-client/1.1"
628 10:15:39 k8s-master-node1 docker-compose[76364]: registryctl        | 127.0.0.1 - - [28/Jun/2023:02:15:39 +0000] "GET /api/health HTTP/1.1" 200 9
628 10:15:39 k8s-master-node1 docker-compose[76364]: harbor-portal      | 127.0.0.1 - - [28/Jun/2023:02:15:39 +0000] "GET / HTTP/1.1" 200 1167 "-" "curl/7.78.0"
628 10:15:39 k8s-master-node1 docker-compose[76364]: registry           | 127.0.0.1 - - [28/Jun/2023:02:15:39 +0000] "GET / HTTP/1.1" 200 0 "" "curl/7.78.0"
628 10:15:40 k8s-master-node1 docker-compose[76364]: registry           | 172.18.0.8 - - [28/Jun/2023:02:15:40 +0000] "GET / HTTP/1.1" 200 0 "" "Go-http-client/1.1"
628 10:15:40 k8s-master-node1 docker-compose[76364]: registryctl        | 172.18.0.8 - - [28/Jun/2023:02:15:40 +0000] "GET /api/health HTTP/1.1" 200 9
628 10:15:40 k8s-master-node1 docker-compose[76364]: harbor-portal      | 172.18.0.8 - - [28/Jun/2023:02:15:40 +0000] "GET / HTTP/1.1" 200 532 "-" "Go-http-client/1.1"
628 10:15:41 k8s-master-node1 docker-compose[76364]: harbor-portal      | 172.18.0.10 - - [28/Jun/2023:02:15:41 +0000] "GET / HTTP/1.1" 200 1167 "-" "curl/7.78.0"
628 10:15:41 k8s-master-node1 docker-compose[76364]: nginx              | 127.0.0.1 - "GET / HTTP/1.1" 200 1167 "-" "curl/7.78.0" 0.000 0.000 .

在 Web 端通过 http://master_ip 访问 Harbor,如图所示:

image-20230628101727660

使用管理员账号(admin/Harbor12345)登录 Harbor,如图所示:

image-20230628101752875

十、基础运维

1.重置集群

若集群部署失败或出现故障,可重置集群重新部署,重置命令如下:

kubeeasy reset

重置完成后再次执行步骤三–九即可重新部署

2.添加节点

再master节点执行以下命令安装依赖包:

kubeeasy install depend --host 192.168.100.32 --user root  --password 000000 --offline-file /opt/dependencies/base-rpms.tar.gz

其中192.168.100.32为新增节点的IP地址。

在master节点执行以下命令即可加入集群:

kubeeasy add --worker 192.168.100.32 --user root --password 000000 --offline-file /opt/kubernetes.tar.gz

十一、容器云平台基础使用

1.kubernetes 集群管理

1.1 kubectl 常用命令

创建资源对象:

kubectl create -f xxx.yaml(文件)
kubectl create -f <directory>(目录下所有文件)

查看资源对象:

kubectl get nodes
kubectl get pods -n <namespace> -o wide

描述资源对象:

kubectl describe nodes <node-name>
kubectl desctibe pod <pod-name>-n<namespace>

删除资源对象:

kubectl delete -f <filename>
kubectl delete pods,services -l name=<label-name>
kubectl delete pods --all

执行容器的命令:

kubectl exec <pod-name>date(默认使用第一个容器执行Pod的date命令)
kubectl exec <pod-name> -c <container-name> date (指定Pod中的某个容器执行date命令)
kubectl exec -it <pod-name> -c <container-name> /bin/bash (相当与docker exec -it <container-name> /bin/bash)

查看容器日志:

kubectl logs <pod-name>
kubectl logs -f <pod-name> -c <container-name>(相当于tail -f 命令)
1.2 kubectl格式化输出

显示Pod的更多信息:

 kubectl get pods -n <namespace> -o wide

以 yaml 格式显示:

 kubectl get pods -n <namespace> -o yaml

以自定义列显示 Pod 信息:

kubectl get pod <pod-name> -n <namespace> -o
custom-columns=NAME:.metadata.name,"ANNOTATIONS":.metadata.annotations

基于文件的自定义列名输出:

 kubectl get pods <pod-name> -o=custom-columns-file=template.txt

输出结果排序:

kubectl get pods --sort-by=.metadata.name

2.KubeVirt集群使用

2.1 基本使用

创建vmi:

kubectl create -f vmi.yaml

查看vmi:

kubectl get vmis

删除vmi:

kubectl delete vmis <vmi-name>
2.2 virtctl 工具

virtctl 是 KubeVirt 自带的类似于 kubectl 的命令行工具,可以直接管理虚拟机,可以控 制虚拟机的 start、stop、restart 等

启动虚拟机:

virtctl start <vmi-name>

停止虚拟机

virtctl stop <vmi-name>

重启虚拟机

virtctl restart <vmi-name>

3. Istio 管理

3.1 istioctl 基本使用

istioctl 用于在 Istio 系统中创建、列出、修改以及删除配置资源。

可用的路由和流量管理配置类型有:virtualservice、gateway、destinationrule、serviceentry、 httpapispec、httpapispecbinding、quotaspec、quotaspecbinding、servicerole、servicerolebinding、 policy。

使用下面命令展示 istioctl 可以访问到的 Istio 配置档的名称:

istioctl profile list

image-20230628104859647

显示配置档的配置信息:

istioctl profile dump demo

显示配置文件的差异:

 istioctl profile diff default demo

可以使用 proxy-status 或 ps 命令概览服务网格:

 istioctl proxy-status

​ 如果输出列表中缺少某个代理则意味着它当前未连接到 Polit 实例,所以它无法接收到 任何配置。此外,如果它被标记为 stale,则意味着存在网络问题或者需要扩展 Pilot。

​ istioctl 允许使用 proxy-config 或者 pc 命令检索代理的配置

检索特定 Pod 中 Envoy 实例的集群配置的信息:

 istioctl proxy-config cluster <pod-name> [flags]

检索特定 Pod 中 Envoy 实例的 bootstrap 配置的信息:

 istioctl proxy-config bootstrap <pod-name> [flags]

检索特定 Pod 中 Envoy 实例的监听器配置的信息:

 istioctl proxy-config listener <pod-name> [flags]

检索特定 Pod 中 Envoy 实例的路由配置的信息:

 istioctl proxy-config route <pod-name> [flags]

检索特定 Pod 中 Envoy 实例的 endpoint 配置的信息:

 istioctl proxy-config endpoints <pod-name> [flags]

4.Helm工具

4.1 helm常用命令

查看版本信息:

 helm version

查看当前安装的 Charts:

 helm list

查询 Charts:

 helm search <chart-name>

查看 Charts 状态:

 helm status redis

删除 Charts:

 helm delete --purge <chart-name>

创建 Charts:

 helm create helm_charts

测试 Charts 语法:

 helm lint

打包 Charts:

 cd helm_charts && helm package ./

查看生成的 yaml 文件:

 helm template helm_charts-xxx.tgz

[flags]


### 4.Helm工具

####     4.1 helm常用命令

查看版本信息:

```shell
 helm version

查看当前安装的 Charts:

 helm list

查询 Charts:

 helm search <chart-name>

查看 Charts 状态:

 helm status redis

删除 Charts:

 helm delete --purge <chart-name>

创建 Charts:

 helm create helm_charts

测试 Charts 语法:

 helm lint

打包 Charts:

 cd helm_charts && helm package ./

查看生成的 yaml 文件:

 helm template helm_charts-xxx.tgz
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

openstack平台搭建笔记(容器云) 的相关文章

  • SQL:exec sp_executesql 用法

    這種是無效的過程 declare sql nvarchar 500 where nvarchar 500 i nvarchar 64 p nvarchar 50 id int set id 5 set sql select p AreaCo
  • 机器学习系列(8):人脸识别基本原理及Python实现

    众所周知 人脸识别和人脸验证已经得到大量应用 那么它们之间有什么异同呢 又是如何实现的呢 这里是机器学习系列第八篇 带你揭开它们神秘的面纱 若图片挂了 可移步 https mp weixin qq com s biz MzU4NTY1NDM
  • STC仿真失败

    原因就是购买的下载工具不适合在烧写STC8H3K64S仿真固件后再将该下载工具作为USB转串口工具连接PC与目标板 推测是接入仿真时会重启目标板 不打算细究 换一个普通串口就好了
  • VS编译.cu文件源文件无法打开matrix.h和mex.h问题

    配置好cu和VS相关库文件后CUDA程序仍然报错 无法打开matrix h和mex h 解决办法 1 这两个头文件是matlab中的 可能无法直接在VS中调用 可以通过添加外部依赖项的方法将matlab中的头文件的文件路径添加进来 VS中按
  • 机器学习:聚类算法API初步使用

    学习目标 知道聚类算法API的使用 1 api介绍 sklearn cluster KMeans n clusters 8 参数 n clusters 开始的聚类中心数量 整型 缺省值 8 生成的聚类数 即产生的质心 centroids 数
  • SQL批量处理+JDBC操作大数据及工具类的封装

    SQL批量处理 JDBC操作大数据及工具类的封装 一 批处理 批量处理sql语句 在jdbc的url中添加rewriteBatchedStatements true参数 可以提高批处理执行效率 在我们进行大批量数据操作的时候 需要采用批处理
  • 不使用80,443,端口,域名还需要备案吗?域名没有备案应该怎么选服务器。

    在互联网日益发达的今天 越来越多的个人 企业 公司涌入其中 在服务器 域名 大量供需的情况下身为一个小白应该要注意什么呢 首先要明确你所需要的服务器是国内大陆服务器 如 杭州 扬州 镇江 宁波等 还是海外服务器 如 香港 美国 日本 韩国等

随机推荐

  • uniapp写h5如何封装一个图片上传预览并且有进度条的组件

    开发背景 首先项目是用uniapp写的h5项目 要求能上传 预览 和进度条展示 还要求总览的时候用缩略图 点开预览要原图 不得不吐槽一下 开发环境 uniapp 阿里云存储 先看截图效果 好了直接上代码 photo picker vue
  • Python基础知识点梳理

    本文简要梳理了Python基础知识的大体框架 目录 一 变量和赋值 二 分支和循环 1 分支结构 2 循环结构 三 数据结构 四 函数 lambda函数 匿名函数 五 面向对象 1 封装 2 继承 六 模块和包 一 变量和赋值 变量是编程语
  • Python 基于 opencv 车牌识别系统的研究与实现

    源码下载地址 https download csdn net download gdutxiaoxu 87419195 原理简介 车牌字符识别使用的算法是opencv的SVM opencv的SVM使用代码来自于opencv附带的sample
  • 数据湖--概念、特征、架构与案例概述

    一 什么是数据湖 数据湖是目前比较热的一个概念 许多企业都在构建或者计划构建自己的数据湖 但是在计划构建数据湖之前 搞清楚什么是数据湖 明确一个数据湖项目的基本组成 进而设计数据湖的基本架构 对于数据湖的构建至关重要 关于什么是数据湖 有如
  • 上传图片到七牛云

    public JSONObject uploadImgToQiniu RequestParam MultipartFile file HttpServletResponse response HttpServletRequest reque
  • 论文笔记: Masked Autoencoders Are Scalable Vision Learners

    1 整体思路 效仿BERT中MLM的思路 随机mask掉输入图像的部分patch 并重建这些被mask掉的patch 机器学习笔记 ELMO BERT UQI LIUWJ的博客 CSDN博客 模型结构是一个非对称的encoder decod
  • 生命在于折腾——SQL注入的实操(五)less21-25

    一 实操环境 1 操作系统 VMware虚拟机创建的win10系统 内存8GB 硬盘255GB 处理器AMD Ryzen 9 5900HX 2 操作项目 sql lib项目 本篇文章介绍关卡21 25 3 工具版本 phpstudy 8 1
  • 百度翻译接口获取过程

    记百度翻译接口获取过程 coding utf 8 usr bin env python 思路 进入到百度翻译 https fanyi baidu com 首先要找到返回数据的接口 打开f12 输入你要翻译的内容后能看到很多请求如图所示 进入
  • Qt播放音乐报错DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x80070002 ()

    需求 在Qt中播放背景音乐 代码片段如下 1 pro添加组件 QT multimedia 2 使用 QMediaPlayer 对象实现播放音乐 循环播放背景音乐 void ClearApp playBG QMediaPlayer playe
  • Qt自定义图片按钮并设置方向

    Qt自定义图片按钮 设置方向 虽然Qt定义了很多很多控件 但是还是不能满足用户的需要 比如如果想使用ToolButton 需要带文字 又需要文字可以设定位置 显然就不行了 下面的代码就是一个简单的实现ToolButton功能 并且能够设置图
  • 【模拟电路】三极管做开关,各个电阻的作用

    下面介绍用NPN做开关来驱动蜂鸣器的用法 对各个电阻的用法的解释 图一 这个比较简单 R20是限流作用 R21也是限流作用 图二 相同的地方就不说了 不同的地方是在基极和发射极之间加了一个电阻 这个电阻主要有两个作用 作用一 防止三极管因为
  • 神经网络中FLOPs和MACs的计算(基于thop和fvcore.nn)

    以 输入为 1 1 200 3 的张量 卷积取 nn Conv2d 1 64 kernel size 8 1 stride 2 1 padding 0 0 为例 先计算输出的形状 公式为 H上为 200 0 8 2 1 97 W上依然是3
  • Python全栈开发【基础-03】编程语言的分类

    专栏介绍 本专栏为Python全栈开发系列文章 技术包括Python基础 函数 文件 面向对象 网络编程 并发编程 MySQL数据库 HTML JavaScript CSS JQuery bootstrap WSGI Django Flas
  • 阿里巴巴都害怕的区块链电商到底是什么?

    近日 区块链权威机构中国通信工业协会区块链专业委员会 CCIAPCB 发出倡议 联合各界将中共中央政治局10月24日集体学习区块链主席讲话日作为 区块链中国日 此次中央将区块链技术放在了国家战略层面高度上 让区块链一时间成了全民热点 特别是
  • 【python数据挖掘课程】二十七.基于SVM分类器的红酒数据分析

    这是 Python数据挖掘课程 系列文章 前面很多文章都讲解了分类 聚类算法 这篇文章主要讲解SVM分类算法 同时讲解如何读取TXT文件数据并进行数据分析及评价的过程 文章比较基础 希望对你有所帮助 提供些思路 也是自己教学的内容 推荐大家
  • TS装饰器

    一 定义 装饰器本质是一种函数 通过添加标注的方式 对数据 类 方法 属性 参数等 的功能进行增加或者修改 二 使用 准备工作 ts config json文件中 1 基础使用 装饰器名字 例子 function test target a
  • 《塞尔达传说:旷野之息》中设计元素的分析

    塞尔达传说 旷野之息 中设计元素的分析 0 写在前面 关于 塞尔达传说 旷野之息 是否属于中型游戏 检索许多资料后 有一种通识是 塞尔达传说 旷野之息 不属于3A级别游戏 显然也不属于小型游戏 因此我姑且认为它属于中型游戏 这也符合此篇的初
  • crypto-js md5加密和解密

    直接上代码 import CryptoJS from crypto js const encodeFactor zq87dopenf67eg 加密 export function encrypt txt var key CryptoJS e
  • 服务攻防-中间件安全&CVE复现&IIS&Apache&Tomcat&Nginx漏洞复现

    目录 一 导图 二 ISS漏洞 中间件介绍 gt 1 短文件 2 文件解析 3 HTTP SYS 4 cve 2017 7269 三 Nignx漏洞 中间件介绍 gt 1 后缀解析漏洞 2 cve 2013 4547 3 cve 2021
  • openstack平台搭建笔记(容器云)

    openstack平台搭建笔记 容器云 一 根据要求准备好配置环境 节点IP 角色 备注 192 168 100 30 Master Kubernetes 集群 master 节点 Harbor 仓库节点 192 168 100 31 Wo