IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> OKD搭建笔录 -> 正文阅读

[网络协议]OKD搭建笔录

使用docker的registry镜像搭建容器仓库,开启https以及认证

生成系统自认证证书,如果是本机或者可以直接添加证书为信任的情况,CA都不用,直接

openssl req -newkey rsa:4096 -nodes -sha256 -keyout /opt/registry/certs/domain.key -x509 -days 3000 -out /opt/registry/certs/domain.crt  -addext "subjectAltName = DNS:registry.okd.example.com"

这样生成key和crt,注意一定要加参数

-addext "subjectAltName = DNS:registry.okd.example.com"

不然registry起来后,客户端访问会报

x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0

原因是go的高版本要求明确指定subjectaltname了,就是他提示那个SAN,参考

GENERAL: What should I do if I get an "x509: certificate relies on legacy Common Name field" error?https://jfrog.com/knowledge-base/general-what-should-i-do-if-i-get-an-x509-certificate-relies-on-legacy-common-name-field-error/How do I use SANs with openSSL instead of common name? - Stack Overflowhttps://stackoverflow.com/questions/64814173/how-do-i-use-sans-with-openssl-instead-of-common-name生成后,本机添加下信任

cp /opt/registry/certs/domain.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust extract

账号认证用

htpasswd -Bbn admin admin > htpassfile

然后就可以起registry容器了。这个镜像的使用方法及参数见官网,主要是镜像存储位置,认证信息,https证书和key?

Deploy a registry server | Docker DocumentationExplains how to deploy a registryhttps://docs.docker.com/registry/deploying/

docker run -d --restart=always --name registry \
? -v /opt/registry/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
? -v /opt/registry/data:/var/lib/registry \
? -v "/opt/registry/auth:/auth" \
? -e "REGISTRY_AUTH=htpasswd" \
? -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
? -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpassfile" \
? -p 443:443 registry

?然后去拖镜像用于离线安装

#OCP_RELEASE直接用下载的installer包的版本号,官网教程不准。

export OCP_RELEASE=4.10.0-0.okd-2022-03-07-131213
export LOCAL_REGISTRY='registry.okd.example.com:443'
export LOCAL_REPOSITORY='openshift/okd'
export PRODUCT_REPO='openshift'
export RELEASE_NAME="okd"
export LOCAL_SECRET_JSON='/root/.docker/config.json'

oc adm release mirror -a ${LOCAL_SECRET_JSON}  \
     --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE} \
     --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} \
     --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}

拖完后会提示

imageContentSources:
- mirrors:
  - registry.okd.example.com:443/openshift/okd
  source: quay.io/openshift/okd
- mirrors:
  - registry.okd.example.com:443/openshift/okd
  source: quay.io/openshift/okd-content

这一段就可以加到install-config.yaml里面去了,这样安装就不需要再去拖镜像了。

安装OKD标准上需要1台基础服务机器,用于配置dns(集群内各种资源和主机的正反解),haproxy(okd 控制节点以及pod的ingress负载均衡),registry(离线容器镜像,基础服务器机器不会跑任何其他容器,所以可以直接用docker的registry,其他registry太大,配置麻烦),等共用服务,1台bootstrap,用于起一个微型k8s环境安装正式的okd master. okd master官网说最少是3台,但网上也有人直接修改配置只装一台的,但安装好后后面还需要改一些其他pod的副本数,资源足够尽量就3台mster,1台bootstrap

官网文档提供了在各种云平台的部署,以及裸金属 installer-provider部署和user provider部署,区别就在于云平台和installer provider环境下,OKD installer会准备很多环境及基础服务,让整个安装过程自动化,简化安装,但对实际技术人员学习来讲,理清安装的每一个环节以及步骤,手动操作才能搞清楚整个安装过程的情况,如果一键安装,不出问题的情况下,那安装完就啥也不知道,也无法理解安装的依赖以及安装情况了。

所以选择user provider部署方式来学习OKD部署最合适,因为user provider方式需要部署的人准备好一切,所以也就知道安装过程是个什么原理发生了什么。

OKD部署大致就是通过install-config.yaml生成manifests,manifests 再生成 部署实际bootstrap以及master的点火文件(bootstrap,master compute节点的点火文件),有了点火文件后,就可以开始安装bootstrap引导(引导安装master用)节点,bootstrap起来后就可以安装master节点了,master起来后就可以干掉bootstrap了,compute节点通过master节点环境安装。

几个节点的安装过程可以通过网络安装(需要DHCP配置好要给到对应节点的信息,IP,主机名,dns,点火文件获取方式),也可以通过手工ISO安装并在安装界面手工添加IP,主机名,点火文件下载信息,或者定制好ISO。

这样安装完成后,也就清楚整个安装过程是怎么来的了。

NOTE1:不知道为啥,我用iso安装,添加coreos.inst.ignition_url 参数不起作用,只能添加IP配置,然后进系统再执行安装

NOTE2:不知道为啥,离线安装方式,bootstrap非要去找registry.okd.example.com:443访问registry,inistall-config.yaml里面修改成2443了,重新生成ign并拷贝到nginx的html目录后,再安装,他还是要去找registry.okd.example.com:443,最后没办法,只能修改回来.

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:47:24  更:2022-04-04 12:47:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:39:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码