Kubernetes集群搭建 (未完待续)

news2024/9/29 9:20:46

Kubernetes集群搭建

目录

  • 前言
  • 前期准备
  • K8S集群安装
    • 虚拟机设置
    • 安装K8S集群
    • k8s部署Nginx
  • 附录1 Docker安装
  • 附录2 yum k8s 问题
  • 附录3 k8s start问题
  • 附录4 k8s master init



前言

本文指定Docker与K8s版本,保证兼容性,可供参考

  • Docker‐ce‐3:19.03.9‐3.el7.x86_64
  • Kubelet‐1.18.0
  • Kubeadm‐1.18.0
  • Kubectl‐1.18.0



前期准备

  • 三台双核4GB内存,centos7+操作系统的虚拟机
    • 192.168.***.133
    • 192.168.***.134
    • 192.168.***.135
  • 三台虚拟机安装Docker (详见附录1)


K8S集群安装



虚拟机设置

三台虚拟机执行以下命令

# 1.关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 2.关闭 selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久关闭(或者选择permissive宽容模式,disable在aarch64架构虚拟机开机docker无法运行)  
setenforce 0 # 临时关闭

# 3.关闭 swap
swapoff -a # 临时关闭
vim /etc/fstab # 永久关闭
#注释掉swap这行
# /dev/mapper/centos‐swap swap swap defaults 0 0
systemctl reboot #重启生效
free -m #查看下swap交换区是否都为0,如果都为0则swap关闭成功

# 4.给三台机器分别设置主机名
hostnamectl set-hostname <hostname>
# 第一台:k8smaster
# 第二台:k8snode1
# 第三台:k8snode2

# 5.在k8s‐master机器添加hosts,执行如下命令,ip需要修改成你自己机器的ip
cat >> /etc/hosts << EOF
192.168.***.133 k8s-master
192.168.***.134 k8s-node1
192.168.***.135 k8s-node2
EOF

sysctl --system # 生效

# 6.将桥接的IPv4流量传递到iptables
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# 立即生效
sysctl -p  /etc/sysctl.d/k8s.conf

# 7.设置时间同步
yum install ntpdate -y
ntpdate time.windows.com



安装K8S集群

# 1、设置k8s yum源  
# x86: https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
# aarch64: https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-aarch64
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-aarch64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm‐package-key.gpg
EOF

# 2、如果之前安装过k8s,先卸载旧版本
yum remove -y kubelet kubeadm kubectl

# 3、查看可以安装的版本
yum list kubelet --showduplicates | sort -r

# 4、安装kubelet、kubeadm、kubectl 指定版本,我们使用kubeadm方式安装k8s集群
# 此处出现的问题:附录二
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0

# 5、开机启动kubelet
systemctl enable kubelet

# 6、在k8s-master机器上执行初始化操作(里面的第一个ip地址就是k8s-master机器的ip,改成你自己机器的,后面两个ip网段不用动)
# 此处出现的问题: 附录四
kubeadm init --apiserver-advertise-address=192.168.***.133 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=Swap

# 7.启动k8s (启动失败现象,附录三)
systemctl start kubelet
# 查看启动状态
systemctl status kubelet -l 
# 查看启动日志
journalctl -xefu kubelet

# 在k8s-master上配置使用 kubectl 命令工具(类似docker这个命令),
 mkdir -p $HOME/.kube
 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 sudo chown $(id -u):$(id -g) $HOME/.kube/config

#查看kubectl是否能正常使用
kubectl get nodes

#安装 Pod 网络插件
kubectl apply -f https://docs.projectcalico.org/v3.10/manifests/calico.yaml
# 如果上面这个calico网络插件安装不成功可以试下下面这个
# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kubeflannel.yml
# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml


## 将node节点加入进master节点的集群里 (三台机器都执行)
kubeadm join 192.168.145.133:6443 --token xiwdb1.ivwp175n7l2c7mad \
    --discovery-token-ca-cert-hash sha256:7ff5423635326f54a5b901f4caec367170fa6d2f29fe095434d5d42d6f0bfe93

kubeadm init 成功
在这里插入图片描述

kubeadm join 192.168.145.133:6443 --token xiwdb1.ivwp175n7l2c7mad \
    --discovery-token-ca-cert-hash sha256:7ff5423635326f54a5b901f4caec367170fa6d2f29fe095434d5d42d6f0bfe93



k8s部署Nginx



附录1 Docker安装

  • Docker 要求 CentOS 系统的内核版本高于 3.10
    # 查看内核版本
    uname ‐r
    
  • 安装需要的软件包, yum-utils提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
    # yum-util 提供yum-config-manager功能
    yum install -y yum‐utils
    # 设置yum源,并更新 yum 的包索引
    sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
    yum makecache fast
    # 注意: 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
    # vim /etc/yum.repos.d/docker-ce.repo
    #   将[docker-ce-test]下方的enabled=0修改为enabled=1
    #
    # 安装指定版本的Docker-CE:
    # Step 1: 查找Docker-CE的版本:
    # yum list docker-ce.x86_64 --showduplicates | sort -r
    #   Loading mirror speeds from cached hostfile
    #   Loaded plugins: branch, fastestmirror, langpacks
    #   docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
    #   docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
    #   docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
    #   Available Packages
    # Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
    # sudo yum -y install docker-ce-[VERSION]
    
  • 查看所有仓库中所有docker版本,并选择特定版本安装
    yum list docker-ce --showduplicates | sort -r
    
  • 安装docker
    yum install docker-ce-19.03.9-3.el7 -y # 这是指定版本安装
    
  • 启动docker并加入开机启动
    systemctl start docker && systemctl enable docker
    
  • 验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
    docker version
    
    在这里插入图片描述
  • docker 镜像加速
    • 登录阿里云https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
      在这里插入图片描述


附录2 yum k8s问题

  • ‘ascii’ codec can’t decode byte 0xe2 in position 719: ordinal not in range(128)
    • 原因: 网上搜是python2的编码问题
    • 解决方法:
      cat > /usr/lib/python2.7/site-packages/sitecustomize.py << EOF
       #encoding=utf8
       import sys
       reload(sys)
       sys.setdefaultencoding('utf-8')
       EOF
      
      # 重启python编译器
      python
      



附录3 k8s start问题

  • systemctl status kubelet -l 查看k8s启动状态发现启动失败,
    在这里插入图片描述
    • journalctl -xefu kubelet 查看启动日志,发现:

      Jan 30 10:30:20 k8s-node1 kubelet[1797]: F0130 10:30:20.011562 1797 server.go:199] failed to load Kubelet config file /var/lib/kubelet/config.yaml, error failed to read kubelet config file “/var/lib/kubelet/config.yaml”, error: open /var/lib/kubelet/config.yaml: no such file or directory

    • 解决方案:

      # 执行kubeadm init
      kubeadm init --kubernetes-version=v1.18.0 --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=172.16.0.0/16 --apiserver-advertise-address=192.168.***.***
      



附录4 k8s master init问题

  • [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
    
    • 原因:检测到"cgroupfs"作为Docker的cgroup驱动程序。 推荐使用systemd驱动需要更换驱动,修改docker Driver
    • 解决方案:
      # 修改配置文件
      vim /etc/docker/daemon.json
      # 增加以下配置json
      {
      "exec-opts":["native.cgroupdriver=systemd"]
      }
      # 重启docker
      systemctl restart docker
      

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

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

相关文章

推荐7个高质量图片素材网站

这期给大家分享7个免费、高质量图片素材网站&#xff0c;而且无版权&#xff0c;不用担心侵权&#xff01;建议收藏。 1、潮点视频 https://shipin520.com/shipin-tp/0-1329-0-0-0-0-0-0-0-1.html?from_code2510 网站主要以提供高质量视频素材为主&#xff0c;但也有大量的配…

基于FPGA的啸叫检测与抑制系统设计与实现verilog

针对啸叫的问题,本文设计了一种基于移频算法的啸叫抑制器。采用高性能音频编解码芯片对音频信号采样,移频器对采样所得的音频信号进行移频,移频频率范围为0~8Hz,再用音频芯片输出,采用FFT算法计算出啸叫点频率值,显示在LCD1602上,此移频器可达到快速有效的啸叫抑制效果。…

【JVM】垃圾回收之对象已死

文章目录1. 概述2. 引用计数算法3. 可达性分析算法4. 引用的分类4.1 软引用的应用本文参考&#xff1a;深入理解Java虚拟机&#xff1a;JVM高级特性与最佳实践&#xff08;第3版&#xff09; 1. 概述 总所周知&#xff0c;垃圾收集器的任务就是将“死去”的对象回收。 那么&a…

自动驾驶感知——毫米波雷达

文章目录1. 雷达的基本概念1.1 毫米波雷达分类1.2 信息的传输1.3 毫米波雷达的信号频段1.4 毫米波雷达工作原理1.4.1 毫米波雷达测速测距的数学原理1.4.2 毫米波雷达测角度的数学原理1.4.3 硬件接口1.4.4 关键零部件1.4.5 数据的协议与格式1.5 车载毫米波雷达的重要参数1.6 车载…

94. BERT以及BERT代码实现

1. NLP里的迁移学习 使用预训练好的模型来抽取词、句子的特征 例如word2vec 或语言模型 不更新预训练好的模型需要构建新的网络来抓取新任务需要的信息 Word2vec忽略了时序信息&#xff0c;语言模型只看了一个方向Word2vec只是抽取底层的信息&#xff0c;作为embedding层&…

数据太多?3款免费数据分析软件,分分钟解决

本文分享下我在做数据分析时用过的几个简单易上手的数据可视化软件。 先放上目录&#xff1a; 数据统计收集类——简道云数据图表美化类——图表秀数据开发类——Echart 01 简道云 https://www.jiandaoyun.com/ 适用于&#xff1a;想要“简单易上手”适合业务人员&#xff0…

TF-A源码移植的过程

1.解压标准 tf-a 源码包&#xff1a; tar xfz tf-a-stm32mp-2.2.r2-r0.tar.gz 2.将 ST 官方补丁文件打到 tf-a 源码中&#xff1a; 3.配置交叉编译工具链&#xff1a; 进入~/FSMP1A/tf-a-stm32mp-2.2.r2-r0$ 目录下&#xff0c;打开Makefile.sdk 将如下内容进行更改 4.复制设…

【前端设计】监控顺序返回型总线超时的计时器模块设计

前言 总线超时检查机制是系统中必要的模块设计&#xff0c;用于在总线无法返回response时能够及时上报中断。从理论上分析&#xff0c;如果总线发生了诸如挂死或者物理损坏等超时行为&#xff0c;无论计时器上报timeout的时间偏大还是偏小&#xff0c;都是一定可以上报中断的。…

Xilinx MicroBlaze系列教程(适用于ISE和Vivado开发环境)

本文是Xilinx MicroBlaze系列教程的第0篇文章。这个系列文章是我个人最近两年使用Xilinx MicroBlaze软核的经验和笔记,以Xilinx ISE 14.7和Spartan-6,以及Vivado 2018.3和Artix-7为例,介绍MicroBlaze软核、AXI系列IP核的软硬件使用,希望能帮助到更多的人。 MicroBlaze是Xil…

什么是有限元分析?能用来干什么

您是否想过工程师和制造商如何测试他们设计的耐用性、强度和安全性&#xff1f;如果您看过汽车广告&#xff0c;您可能会相信工程师和设计师不断地破坏他们的产品以测试其强度。您可能会得出结论&#xff0c;制造商会重复此过程&#xff0c;直到设计能够承受巨大的损坏并达到可…

夜游经济:夜景“亮化”,形象“美化”,经济“活化”

复杂的国际形势之下&#xff0c;扩大国内消费需求&#xff0c;激发消费市场潜力&#xff0c;堪称疫后经济复苏振兴的“金钥匙”。这一背景下&#xff0c;大力发展夜游经济&#xff0c;成为提振国内消费需求、促进城乡居民就业、拉动经济复苏增长的重要突破口。去年以来&#xf…

无法超越的100米_百兆以太网传输距离_网线有哪几种?

对网络比较了解的朋友&#xff0c;都知道双绞线有一个“无法逾越”的“100米”传输距离。无论是10M传输速率的三类双绞线&#xff0c;还是100M传输速率的五类双绞线&#xff0c;甚至1000M传输速率的六类双绞线&#xff0c;最远有效传输距离为100米。在综合布线规范中&#xff0…

Qt下实现欧姆龙PLC 串口发送HOSTLINK(FINS)模式

文章目录前言一、HOSTLINK协议说明二、校验码&#xff08;FCS&#xff09;计算三、示例完整代码四、下载链接总结前言 本文讲述了Qt下模拟串口调试工具发送HOSTLINK&#xff08;FINS&#xff09;模式&#xff0c;主要进行了HR保持区的字和位的读写&#xff0c;对HOSTLINK协议中…

记一次CPU飚高以及排查过程

一.cpu突然飚高 收到系统频发的cpu超过90%的告警.虽然是在非线上环境出现.接到告警后第一反应还是去重启了机器,重启后cpu如期的下降了下来.以为能高枕无忧,不过一会儿还是收到了告警. 二.排查 2.1 top 指令查看物理机进程id 申请了堡垒机权限登上机器 top指令后.如下确实发…

微服务,Docker, k8s,Cloud native 云原生的简易发展史

微服务发展史 2005年&#xff1a;Dr. PeterRodgers在Web ServicesEdge大会上提出了“Micro-Web-Services”的概念。2011年&#xff1a;一个软件架构工作组使用了“microservice”一词来描述一种架构模式。2012年&#xff1a;同样是这个架构工作组&#xff0c;正式确定用“micr…

万字详解 C 语言文件操作

目录 一、什么是文件&#xff1f; 1.1 - 文件和流的基本概念 1.2 - 文件的分类 1.3 - 文件名 二、缓冲文件系统和非缓冲文件系统 三、文件指针类型 四、文件的打开和关闭 4.1 - fopen 4.2 - fclose 五、文件的顺序读写 5.1 - 字符输出函数 fputc 5.2 - 字符输入函数…

【Kubernetes 企业项目实战】06、基于 Jenkins+K8s 构建 DevOps 自动化运维管理平台(上)

目录 一、k8s 助力 DevOps 在企业落地实践 1.1 传统方式部署项目为什么发布慢&#xff0c;效率低&#xff1f; 1.2 上线一个功能&#xff0c;有多少时间被浪费了&#xff1f; 1.3 如何解决发布慢&#xff0c;效率低的问题呢&#xff1f; 1.4 什么是 DevOps&#xff1f; …

【JavaScript】原型链

文章目录构造函数原型对象访问机制内置构造函数一切皆对象原型链构造函数 - 本质还是一个函数- 和 new 关键字连用- 特点1. 自动创建一个对象2. 自动返回一个对象3. 让函数的this指向这个对象 书写构造函数的时候1. 属性写在函数内2. 方法写在原型上构造函数的不合理 把方法写在…

Android studio 护眼模式配置、字体大小设置、内存大小设置等各类疑难杂症

Android studio 4.1 1、左边目录栏颜色配置&#xff1a; 2、代码编辑区域背景色设置 3、控制台背景色设置 4、菜单栏、工具栏、左边栏字体大小设置 5、编码区字体大小设置 6、修改内存大小、显示内存 例如&#xff1a;修改android-studio/bin/studio.vmoptions studio64.vmop…

NANK南卡护眼台灯Pro评测,护眼台灯天花板般存在!

现代大环境下&#xff0c;生活节奏和压力的不断加快加重&#xff0c;如今的手机、电脑屏幕以及长时间的工作学习都会出现用眼过度的问题&#xff0c;久而久之&#xff0c;各种眼睛刺痛、干涩、肿胀等近视问题接踵而至。为了保障自己的健康&#xff0c;近些年&#xff0c;人们纷…