Clickhouse集群化(一)k8s集群搭建

news2024/9/24 5:30:02

环境准备:

vm 17 pro 有些功能必须pro版本才会提供(https://download.csdn.net/download/weixin_40663313/89677277?spm=1001.2014.3001.5501)夸克下载链接

centos 7.9 

docker:1.26 

k8s:1.21.14

1. 创建虚拟机

参考:VM部署CentOS并且设置网络_vmware安装contos设置主机名和网卡信息-CSDN博客

vm 17 pro 注册码 4A4RR-813DK-M81A9-4U35H-06KND

1.1. 创建自定义虚拟机

选择自定义配置

我这里安装的是vm17 直接选择最新的

选择centos系统

设置虚拟机名称和路径

分配cpu

分配内存

选择nat 网络配置后续在修改

选择默认即可

创建新的磁盘 大小按需选择

1.2. 选择镜像

刚创建的时候并未选择镜像 可以在设置中设置镜像位置

1.3. 克隆

vm提供了快速创建相同虚拟机的操作

2. 安装centos

选择iso镜像后 安装centos

选择语言

时间

设置密码(中间会有一些其他设置包括 存储位置 网络等 建议默认就行)有些出现三角形感叹号的是需要我们进去配置并点击完成 可以进去选择默认即可

2.1. 网络设置(DHCP)

cd /etc/sysconfig/network-scripts/

2.2. 手动获取

固定ip 方便远程连接

3. 部署前置准备

vi /etc/hosts

192.168.157.129 master

192.168.157.130 node1

192.168.157.131 node2

3.1. 时间同步

kubernetes要求集群中的节点时间必须精确一致, 这里直接使用chronyd服务从网络同步时间。

# 启动chronyd服务

systemctl start chronyd



#设置chronyd服务开机自启

systemctl enable chronyd



# chronyd服务启动稍等几秒钟,就可以使用date命令验证时间了

date

3.2. 关闭相关服务

# 1关闭firewalld服务

systemctl stop firewalld

systemctl disable firewalld



# 2关闭iptables服务

systemctl stop iptables

systemctl disable iptables


# a. 临时关闭swap,防止 执行 kubeadm 命令爆错。

swapoff -a

# b. 临时关闭 selinux,减少不必要的配置。

setenforce 0

设置网桥信息

cat << EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

3.3. 更换yum源

装的时候遇到了奇葩问题 不发解析host的问题curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误"

尝试修改vim /etc/resolv.conf文件 为解决问题

更换yum源

vi /etc/yum.repos.d/CentOS-Base.repo

将这个地方的baseurl注释去掉 链接换成mirrors.aliyun.com

同时把下面的mirrorlist注释掉

更换后执行

yum clean all

yum makecache

3.4. 配置ipvs功能

# 1安装ipset和ipvsadm

yum install ipset ipvsadmin -y



# 2添加需要加载的模块写入脚本文件

cat <<EOF > /etc/sysconfig/modules/ipvs.modules

#! /bin/bash

modprobe -- ip_vs

modprobe -- ip_vs_rr

modprobe -- ip_vs_wrr

modprobe -- ip_vs_sh

modprobe -- nf_conntrack_ipv4

EOF



# 3为脚本文件添加执行权限

chmod +x /etc/sysconfig/modules/ipvs.modules



# 4执行脚本文件

/bin/bash /etc/sysconfig/modules/ipvs.modules



# 5查看对应的模块是否加载成功

lsmod | grep -e ip_vs -e nf_conntrack_ipv4

3.5. 重启

4. 安装docker

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

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

# 2查看当前镜像源中支持的docker版本

yum list docker-ce --showduplicates



# 3安装特定版本的docker-ce

# 必须指定--setopt=obsoletes=0,否则yum会自动安装更高版本

yum install --setopt=obsoletes=0 docker-ce-20.10.24-3.el7 -y

# 4添加一个配置文件

# Docker在默认情况下使用的Cgroup Driver为cgroupfs, 而kubernetes推荐使用systemd来代替cgroupfs

mkdir /etc/docker

cat <<EOF > /etc/docker/daemon.json

{

"exec-opts": ["native.cgroupdriver=systemd"],

"registry-mirrors": ["https://o36meer8.mirror.aliyuncs.com"]

}

EOF



# 5启动docker

systemctl restart docker

systemctl enable docker



# 6检查docker状态和版本

docker version

5. 安装k8s

​
cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=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

yum install -y --nogpgcheck kubelet-1.21.14 kubeadm-1.21.14 kubectl-1.21.14

​

# 在安装kubernetes集群之前,必须要提前准备好集群需要的镜像,所需镜像可以通过下面命令查看

kubeadm config images list

# 下载镜像 有些镜像需要翻墙 也可以尝试下面方案

部分镜像已导出

镜像icon-default.png?t=N7T8https://pan.quark.cn/s/4c63051ec9ed

# 此镜像在kubernetes的仓库中,由于网络原因,无法连接,下面提供了一种替代方案

images=(

kube-apiserver:v1.21.14

kube-controller-manager:v1.21.14

kube-scheduler:v1.21.14

kube-proxy:v1.21.14

pause:3.4.1

etcd:3.4.13-0

coredns:1.8.0

)



for imageName in ${images[@]} ; do

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName

docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName

done

5.1. 初始化集群

查看安装结果

kubelet --version
kubectl version
kubeadm version

启动 kubelet 服务

systemctl daemon-reload
systemctl start kubelet

下面操作在master节点上进行

# 创建集群

kubeadm init --kubernetes-version=v1.21.5 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --apiserver-advertise-address=192.168.157.129 --image-repository registry.aliyuncs.com/google_containers

(还可以以配置的方式执行)参考云服务器安装k8s和kubesphere踩坑_kubekey拉取镜像失败-CSDN博客

初始化成功注意这两个地方 一个创建必要文件 一个为了后续node加入master

# 创建必要文件

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubeadm join 192.168.157.129:6443 --token 16mn6b.cfcaejq8zyq0j6zt \

--discovery-token-ca-cert-hash sha256:d82b289f4f3d4c6342e1b2c012c186ba83dbfc062eadc2982a8519a2b24fcb9b

# 如果忘记 kubeadm token create --print-join-command

同时在node1 node2执行join操作

发现已经有node 接下来安装网络插件

5.2. 安装网络插件

​
# 获取fanne1的配置文件

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

如果下载不了 可以用网上找的

# 使用配置文件启动fannel

kubectl apply -f kube-flannel.yml

# 稍等片刻,再次查看集群节点的状态

kubectl get nodes

​

 如果下载失败 可以使用下面的文件

---
kind: Namespace
apiVersion: v1
metadata:
  name: kube-flannel
  labels:
    pod-security.kubernetes.io/enforce: privileged
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: flannel
rules:
  - apiGroups:
      - ""
    resources:
      - pods
    verbs:
      - get
  - apiGroups:
      - ""
    resources:
      - nodes
    verbs:
      - list
      - watch
  - apiGroups:
      - ""
    resources:
      - nodes/status
    verbs:
      - patch
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: flannel
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: flannel
subjects:
  - kind: ServiceAccount
    name: flannel
    namespace: kube-flannel
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: flannel
  namespace: kube-flannel
---
kind: ConfigMap
apiVersion: v1
metadata:
  name: kube-flannel-cfg
  namespace: kube-flannel
  labels:
    tier: node
    app: flannel
data:
  cni-conf.json: |
    {
      "name": "cbr0",
      "cniVersion": "0.3.1",
      "plugins": [
        {
          "type": "flannel",
          "delegate": {
            "hairpinMode": true,
            "isDefaultGateway": true
          }
        },
        {
          "type": "portmap",
          "capabilities": {
            "portMappings": true
          }
        }
      ]
    }
  net-conf.json: |
    {
      "Network": "10.244.0.0/16",
      "Backend": {
        "Type": "vxlan"
      }
    }
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: kube-flannel-ds
  namespace: kube-flannel
  labels:
    tier: node
    app: flannel
spec:
  selector:
    matchLabels:
      app: flannel
  template:
    metadata:
      labels:
        tier: node
        app: flannel
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                  - key: kubernetes.io/os
                    operator: In
                    values:
                      - linux
      hostNetwork: true
      priorityClassName: system-node-critical
      tolerations:
        - operator: Exists
          effect: NoSchedule
      serviceAccountName: flannel
      initContainers:
        - name: install-cni-plugin
          #image: flannelcni/flannel-cni-plugin:v1.1.0 for ppc64le and mips64le (dockerhub limitations may apply)
          image: docker.io/rancher/mirrored-flannelcni-flannel-cni-plugin:v1.1.0
          command:
            - cp
          args:
            - -f
            - /flannel
            - /opt/cni/bin/flannel
          volumeMounts:
            - name: cni-plugin
              mountPath: /opt/cni/bin
        - name: install-cni
          #image: flannelcni/flannel:v0.20.0 for ppc64le and mips64le (dockerhub limitations may apply)
          image: docker.io/rancher/mirrored-flannelcni-flannel:v0.20.0
          command:
            - cp
          args:
            - -f
            - /etc/kube-flannel/cni-conf.json
            - /etc/cni/net.d/10-flannel.conflist
          volumeMounts:
            - name: cni
              mountPath: /etc/cni/net.d
            - name: flannel-cfg
              mountPath: /etc/kube-flannel/
      containers:
        - name: kube-flannel
          #image: flannelcni/flannel:v0.20.0 for ppc64le and mips64le (dockerhub limitations may apply)
          image: docker.io/rancher/mirrored-flannelcni-flannel:v0.20.0
          command:
            - /opt/bin/flanneld
          args:
            - --ip-masq
            - --kube-subnet-mgr
          resources:
            requests:
              cpu: "100m"
              memory: "50Mi"
            limits:
              cpu: "100m"
              memory: "50Mi"
          securityContext:
            privileged: false
            capabilities:
              add: ["NET_ADMIN", "NET_RAW"]
          env:
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: POD_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            - name: EVENT_QUEUE_DEPTH
              value: "5000"
          volumeMounts:
            - name: run
              mountPath: /run/flannel
            - name: flannel-cfg
              mountPath: /etc/kube-flannel/
            - name: xtables-lock
              mountPath: /run/xtables.lock
      volumes:
        - name: run
          hostPath:
            path: /run/flannel
        - name: cni-plugin
          hostPath:
            path: /opt/cni/bin
        - name: cni
          hostPath:
            path: /etc/cni/net.d
        - name: flannel-cfg
          configMap:
            name: kube-flannel-cfg
        - name: xtables-lock
          hostPath:
            path: /run/xtables.lock
            type: FileOrCreate

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2078246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图书馆自习预约选座小程序

一、项目概述 Hi&#xff0c;大家好&#xff0c;今天分享的项目是《图书馆自习预约选座小程序》。 图书馆是日常同学学习的好去处&#xff0c;但同学们日益高涨的学习热情和图书馆座位有限的矛盾也日益凸显。经常出现座位不够的情况&#xff0c;甚至部分同学会进行占座&#…

腾讯浙大提出定制化视频生成框架CustomCrafter,只需通过少量图像就可以完成高质量视频生成!

腾讯联合浙大提出了一种定制化视频生成框架-CustomCrafter&#xff0c;它能够基于文本提示和参考图像生成自定义视频&#xff0c;同时保留运动生成和概念组合的能力。通过设计一系列灵活的模块&#xff0c;使得模型实现了无需额外视频&#xff0c;通过少量图像学习&#xff0c;…

【开端】 进行页面升级或维护时不影响用户体验NGINX配置

一、绪论 在网站管理中&#xff0c;经常需要进行页面升级或维护&#xff0c;而为了不影响用户体验&#xff0c;我们可以设置一个访问页面&#xff0c;在页面升级期间&#xff0c;用户访问网站时会直接跳转到该页面。本文将介绍如何设置访问页面进行升级&#xff0c;以确保用户…

Vue(1)——创建实例

Vue创建实例 Vue是用于构建用户界面的渐进式框架。 创建Vue实例&#xff0c;初始化渲染 准备容器引包(开发版本/生产版本)创建Vue实例指定配置项&#xff0c;渲染数据 el指定挂载点 data提供数据 <!-- 准备容器 --><div id"app"><h1>{{msg}}<…

【论文阅读】Automatic Modulation Classification Based Deep Learning: A Review(2022)

摘要 Automatic Modulation Recognition&#xff08;自动调制识别&#xff09; (AMR) is a critical component of&#xff08;重要组成部分&#xff09; smart communication&#xff08;智能通信&#xff09; and it contributed&#xff08;促进了&#xff09; to the deve…

【中学教资科目二】04中学心理

04中学心理 第一节 认知过程1.1 注意的分类1.2 想象 第二节 学习概述以及知识的学习与技能的形成2.1 知识学习的分类2.2 分化和泛化2.3 强化理论 第三节 学习理论3.1 认知学习理论3.2 建构主义学习理论3.3 行为主义学习理论 第四节 学习心理4.1 奥苏贝尔成就动机分类4.2 学习迁…

【9月持续更新】国内ChatGPT-4o中文镜像网站整理~

以前我也是通过官网使用&#xff0c;但是经常被封号&#xff0c;就非常不方便&#xff0c;后来有朋友推荐国内工具&#xff0c;用了一阵之后&#xff0c;发现&#xff1a;稳定方便&#xff0c;用着也挺好的。 最新的 GPT-4o、4o mini&#xff0c;可搭配使用~ 1、 最新模型科普&…

ES6笔记总结:第四天(ES6完结)

Xmind鸟瞰图&#xff1a; 简单文字总结&#xff1a; node的模块化&#xff1a; 1.CommonJS 规范&#xff1a;Node.js 遵循 CommonJS 模块规范&#xff0c;该规范定义了如何在服务器环境中实现模块化&#xff0c;包括如何定义模块、如何引入和使用模块。 2.模块的定义&…

最新网站服务器CC压力测试系统源码

最新网站服务器CC压力测试系统源码 前后端全开源 一款可测压的系统&#xff0c;但不提供接口。 环境&#xff1a;php7.3 mysql5.6 Apache 2.4.53 上传后解压 访问域名/install进行安装 后台地址&#xff1a;域名/admin 账号&#xff1a;admin 密码&#xff1a;admin 代…

护眼落地灯十大品牌排行榜:十大口碑一流护眼大路灯汇总

十大护眼落地灯品牌哪个牌子好&#xff1f;孩子在读写时经常出现揉眼睛以及眼睛酸痛等现象&#xff0c;多半是因不良光线引起的&#xff0c;光线频闪、发光不均以及太暗太亮都会对眼睛有伤害&#xff0c;而想要改善室内光线环境&#xff0c;护眼大路灯就可以起到改善室内光线环…

JavaScript计算问题

项目场景&#xff1a; 使用JavaScript做 算数运算&#xff0c;比较大小时&#xff0c;没有区分数据类型&#xff0c;导致错误 问题描述 为什么这个数学运算&#xff0c;没有按照我的预期去执行呢&#xff1f; "123" > 123 //false 123 > 123 //false&…

Oracle taf高级特性使用

0、taf介绍 TAF是Oracle数据库提供的一个高级特性&#xff0c;旨在实现应用程序在数据库连接中断时的透明重连。它允许应用程序在数据库故障发生时&#xff0c;无需修改代码或手动干预&#xff0c;就能自动连接到新的数据库实例&#xff0c;保证了事务的连续性和应用的高可用性…

什么是稀土高阻隔剂?

高阻隔性能粉末稀土是一种具有特殊性能的材料。金士镧高阻隔剂采用稀土定向生长技术与高温高压工艺相结合&#xff0c;对不同尺度的稀土材料进行规整度控制&#xff0c;获得具有结构紧密、耐强酸强碱、耐高温、低吸油的高强度稀土粉体。该稀土粉体可应用于耐高温、补强、阻隔需…

易基因:Exp Mol Med:ChIP-seq等揭示Foxo1-YAP-Notch1轴在疾病进展中的表观调控作用——重编程STING介导的先天免疫

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 非酒精性脂肪性肝炎&#xff08;nonalcoholic steatohepatitis&#xff0c;NASH&#xff09;是一种慢性肝脏疾病&#xff0c;其特征是肝脏中脂肪积累、炎症和纤维化。干扰素基因刺激因子…

windows安装Carla

1.下载Carla&#xff1a; Releases carla-simulator/carla GitHub 下载windows版本的&#xff0c;ubuntu版本的navidia driver有问题&#xff0c;还没搞定&#xff0c;就先用windows版本吧。 2.把地图解压出来&#xff0c;放到下图所示的地方&#xff0c;启动的时候carla会…

go 使用 gitlab 搭建私有化模块系统

背景 本教程旨在教大家使用私有化部署的 gitlab 作为 go 的代码共享库&#xff0c;帮助团队分离代码模块&#xff0c;加强质量管控。go 官方在实现过程中就高度结合 VCS 系统&#xff0c; 可以仅通过配置相关的环境变量就实现私有库在 VCS 上的搭建。 代码分离样例 这里直接…

QT安装步骤

1、下载 打开下载链接&#xff1a; Index of /official_releases/online_installers页面下载在线安装工具 选择下载 qt-unified-windows-x64-online.exe&#xff0c;等下载完毕后直接运行即可 2、安装 下一步 下一步 选择安装目录&#xff0c;下一步&#xff0c;进入选择安装…

GalaChain 全面剖析:为 Web3 游戏和娱乐而生的创新区块链

作者&#xff1a;Stella L (stellafootprint.network) 原文首发于 CoinGecko Footprint Analytics 专栏。 什么是 GalaChain? GalaChain 是一款专为娱乐领域打造但具备广泛适用性的 Layer 1 区块链&#xff0c;由 Gala 构建&#xff0c;旨在支撑其日益扩张的娱乐生态系统。…

吴恩达辞任Landing AI CEO,专注AI投资?数学家斯蒂芬预言哲学家引领AI未来|AI日报

文章推荐 与人类产生情感共鸣&#xff1f;数字华夏推出“夏澜”人形机器人&#xff1b;微软Azure AI语音服务推出虚拟人形象&#xff5c;AI日报 码上报名丨大模型论坛&#xff0c;热议技术创造力与应用想象力 今日热点 国内首家人工智能标准化研究机构&#xff0c;北京人工…

Ubuntu下部署Hadoop集群+Hive(四)

更换为Tez计算引擎 准备环境&#xff1a; apache-tez-0.10.3-bin.tar.gz 下载地址&#xff1a;Index of /apache/tez (tsinghua.edu.cn) 步骤&#xff1a; 1.将apache-tez-0.10.3-bin.tar.gz包上传到安装hive的节点服务器&#xff0c;放到/opt/software目录下&#xff1b;…