草庐IT

一文学会基于HA方案的kubernetes集群(准备环境)

sknfie 2023-03-28 原文

一、准备硬件环境

1、准备硬件环境

(1)准备虚5台拟机

虚拟机-192.168.1.10 规格:CentOS Linux 7 (Core) 4核CPU、8G内存、50G磁盘
虚拟机-192.168.1.11 规格:CentOS Linux 7 (Core) 4核CPU、8G内存、50G磁盘
虚拟机-192.168.1.12 规格:CentOS Linux 7 (Core) 4核CPU、8G内存、50G磁盘
虚拟机-192.168.1.13 规格:CentOS Linux 7 (Core) 4核CPU、8G内存、50G磁盘

(2)环境信息

docker私有镜像仓库:192.168.1.10 
master1:192.168.1.10 
master2:192.168.1.11 
master3:192.168.1.12 
node1:192.168.1.12 
node2:192.168.1.13

主机192.168.1.12,既是master节点也是node节点,HA方案集群部署成功,放开该节点可调度运行 POD

(3)以192.168.1.13为例配置虚拟机网络,同理配置另外三台虚拟机网络

1)、配置DNS

cat > /etc/resolv.conf <<EOF 
nameserver 114.114.114.114 
EOF 

2)、关闭防火墙

systemctl stop firewalld 
systemctl disable firewalld

3)、配置网络
vi /etc/sysconfig/network-scripts/ifcfg-eno16777736

TYPE=Ethernet 
NAME=eno16777736
UUID=5d281005-5b79-4fb5-8f10-f2f3d97c4f6b 
DEVICE=eno16777736 
IPADDR=192.168.1.13 
NETMASK=255.255.255.0 
NETWORK=192.168.1.0 
BROADCAST=192.168.1.255 
GATEWAY=192.168.1.1 
ONROOT=yes 
USERCTL=no 
BOOTPROTO=static

4)、增加阿里yum源,执行以下命令

cd /etc/yum.repos.d/ 
yum install -y wget 
wget http://mirrors.aliyun.com/repo/Centos-7.repo 
yum install -y epel-release 

在末尾添加下面内容,重载生效systemctl daemon-reload

vi /etc/yum.repos.d/Centos-7.repo 
[aliyun]
name=aliyun_yum 
baseurl=https://mirrors.aliyun.com/centos/$releasever/os/x86_64/ 
gpgcheck=0 
enabled=1 

[epel] 
name=net epel 
baseurl=https://mirrors.aliyun.com/epel/$releasever/x86_64/ 
gpgcheck=0 
enabled=1

2、主机基础配置

(1)、配置docker yum源(四台主机都配置 )

1)、安装组件

yum install -y yum-utils device-mapper-persistent-data lvm2

2)、配置阿里yum源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

(2)、配置kubernetes yum源(四台主机都配置 )

1)、配置阿里yum源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo 
[kubernetes] 
name=Kubernetes 
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 
enabled=1 
gpgcheck=1 
repo_gpgcheck=1 
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg 
EOF

(3)、配置主机域名(四台主机都配置 )

cat <<EOF >> /etc/hosts 
192.168.1.10 registry.yunlearn.org 
192.168.1.10 k8s.yunlearn.org 
EOF

二. 部署基于https协议的docker私有镜像仓库

1、部署基于https协议的docker私有镜像仓库

(1)、安装docker

  • 1)、每台主机安装docker
//这一步版本有问题,需要改一下
yum install -y docker-ce-19.03.15
//改成
yum -y install docker-ce-19.03.15 docker-ce-cli-19.03.15 containerd.io
  • 2)、检查已安装docker版本
rpm -qa | grep docker 

如果安装不是预期版本,可卸载重新安装

rpm -e --nodeps docker组件包 
  • 3)、 本地虚拟主机docker配置(仅供参考)
cat > /etc/docker/daemon.json <<EOF
{ 
"registry-mirrors": ["https://registry.docker-cn.com", "https://docker.mirrors.ustc.edu.cn"],
 "log-driver": "json-file",
 "log-opts": { "max-size": "1G", "max-file": "3" }, 
"exec-opts":["native.cgroupdriver=systemd"] 
}
EOF 
  • 4)、 生产主机docker配置(仅供参考)
cat > /etc/docker/daemon.json <<EOF
{ "registry-mirrors": ["https://registry.docker-cn.com", "https://docker.mirrors.ustc.edu.cn"], 
"log-driver": "json-file", 
"log-opts": { "max-size": "1G", "max-file": "3" },
"storage-driver": "overlay2",
 "storage-opts": [ "overlay2.override_kernel_check=true" ] 
}
EOF 
  • 5)、启动docker并验证
    启动docker
systemctl start docker 

设置开机启动

systemctl enable docker 

查看版本

docker version 

(2)、安装registry

部署基于https协议的docker私有镜像仓库
在192.168.1.10主机安装

  • 1)、制作docker镜像仓库证书(有效期10年)
mkdir -p /root/kubeadm/registry 
cd /root/kubeadm/registry 
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 3650 -out ca.crt -subj "/C=CN/ST=GX/L=Nan Ning/O=learn, Ltd./CN=learn Certificate" 
openssl req -newkey rsa:4096 -nodes -sha256 -keyout docker.key -out docker.csr -subj "/C=CN/ST=GX/L=Nan Ning/O=learn, Ltd./CN=registry.yunlearn.org" 
openssl x509 -req -days 3650 -in docker.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out docker.crt 
  • 2)、创建docker镜像仓库用户
mkdir -p /opt/registry-var/auth/ 

创建docker镜像仓库用户名和密码 learn 123456

docker run --entrypoint htpasswd registry:2.6.2 -Bbn learn 123456 >> /opt/registry-var/auth/htpasswd 
  • 3)、启动docker镜像仓库

将制作成功的证书拷贝到/data/registry/certs
只需拷docker.crt和docker.key证书

mkdir -p /data/registry/data 
mkdir -p /data/registry/certs 
cd /root/kubeadm/registry 
cp -rp docker.crt docker.key /data/registry/certs/ 

启动docker镜像仓库

docker run -d -p 5000:5000 --restart=always --name registry -v /opt/registry-var/auth:/auth -v /data/registry/data:/var/lib/registry -v /data/registry/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/docker.crt -e REGISTRY_HTTP_TLS_KEY=/certs/docker.key registry:2.6.2
  • 4)、配置四台主机的docker镜像仓库证书并重启docker服务(systemctl restart docker)
# 从192.168.1.10:/root/kubeadm/registry 拷docker.crt证书到192.168.1.11/12/13主机 
scp docker.crt 192.168.1.11:/root/kubeadm/ 
scp docker.crt 192.168.1.12:/root/kubeadm/ 
scp docker.crt 192.168.1.13:/root/kubeadm/ 
# centos 
cat docker.crt >> /etc/pki/tls/certs/ca-bundle.crt 
systemctl restart docker 
# ubuntu 
cat docker.crt >> /etc/ssl/certs/ca-certificates.crt 
systemctl restart docker 
  • 5)、验证docker镜像仓库
# 实操提示:可以从192.168.1.10拉取互联网镜像,也可以上传课程资源镜像文件到/root/kubeadm/image,用:docker load -i nginxv1.19.6.tar.gz 命令导入该主机 
docker tag nginx:latest registry.yunlearn.org:5000/release/nginx:1.19.6 
docker push registry.yunlearn.org:5000/release/nginx:1.19.6
docker pull registry.yunlearn.org:5000/release/nginx:1.19.6 # 实操提示:如果提示域名地址无法解析,请检查/etc/hosts是否已配置主机域名解析地址;第4步配 置docker.crt证书后,记得重启docker服务 
  • 6)、查看docker镜像仓库
# 在192.168.1.11/12/13任一台主机验证docker login 
docker login registry.yunlearn.org:5000 -- 按提示输入用户名和密码(查看第2步) learn 123456 
# 查看库中的镜像和版本 
curl -k https://registry.yunlearn.org:5000/v2/_catalog --查看目前库中的镜像 
curl -k https://registry.yunlearn.org:5000/v2/release/nginx/tags/list --查看镜像的版本
# 实操提示:由于docker镜像仓库证书是自签的原因,所以使用curl命令时,带上"-k"或者"-- insecure"参数跳过对证书的验证

备注:

如果docker 版本不对,那么删除已经安装的版本:

yum -y remove docker-ce.x86_64 docker-ce-cli.x86_64 docker-ce-rootless-extras.x86_64 docker-scan-plugin.x86_64

rm -rf /var/lib/docker/

重新选择版本安装

yum list docker-ce.x86_64 docker-ce-cli.x86_64 --showduplicates | sort -r | grep 19.03
yum -y install docker-ce-19.03.15 docker-ce-cli-19.03.15 containerd.io

有关一文学会基于HA方案的kubernetes集群(准备环境)的更多相关文章

  1. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

    在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

  2. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  3. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  4. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  5. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  6. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  7. ruby-on-rails - ruby gem如何在rails环境下工作 - 2

    我试图在rails中了解rubygems是如何变得可以自动使用的,而不是在使用required的文件中gem? 最佳答案 这是通过bundler/setup完成的:http://bundler.io/v1.3/bundler_setup.html.它在您的config/boot.rb文件中是必需的。简而言之,它首先将环境变量设置为指向您的Gemfile:ENV['BUNDLE_GEMFILE']||=File.expand_path('../../Gemfile',__FILE__)然后它通过要求bundler/setup将所有ge

  8. Ruby 守护进程和 JRuby - 备选方案 - 2

    我有一个应用程序正在从Ruby迁移到JRuby(由于需要通过Java提供更好的Web服务安全支持)。我使用的gem之一是daemons创建后台作业。问题在于它使用fork+exec来创建后台进程,但这对JRuby来说是禁忌。那么-是否有用于创建后台作业的替代gem/wrapper?我目前的想法是只从shell脚本调用rake并让rake任务永远运行......提前致谢,克里斯。更新我们目前正在使用几个与Java线程相关的包装器,即https://github.com/jmettraux/rufus-scheduler和https://github.com/philostler/acts

  9. ruby-on-rails - 我需要一个真正的 UNIX RoR 开发环境 - 2

    从一开始,我就是一个Windows高手。我从MS-DOS开始。我安装了Windows2.1以及此后的所有Windows。现在,我家里有10台不同的Windows机器在运行,从Windows7Ultimate到各种版本的WindowsServer。我还没有完成Windows8,也不想去那里。我在服务器和各种软件方面都有UNIX经验,但它并不是我的首选环境。但是,我想我正在转换。我试图假装使用Cygwin和MSYS在Windows下运行UNIX。我的目的是搭建一个开发环境。两者都让我失望了。我花了比开发更多的时间来解决一系列技术问题。这是NotAcceptable。到目前为止,我的Ruby

  10. ruby-on-rails - (Ruby,Rails) 基于角色的身份验证和用户管理...? - 2

    我正在寻找用于Rails的优质管理插件。似乎大多数现有的插件/gem(例如“restful_authentication”、“acts_as_authenticated”)都围绕着self注册等展开。但是,我正在寻找一种功能齐全的基于管理/管理角色的解决方案——但不是简单地附加到另一个非基于角色的解决方案。如果我找不到,我想我会自己动手......只是不想重新发明轮子。 最佳答案 RyanBates最近做了两个关于授权的railscast(注意身份验证和授权之间的区别;身份验证检查用户是否如她所说的那样,授权检查用户是否有权访问资源

随机推荐