centos7 部署kubernetes(带自动部署脚本)

目录

一、实验规划

1、规划表

2、安装前宿主机检查

1.配置主机名

2.制作ssh免密(VM1中执行)

 3.修改hosts 文件

4. 修改内核相关参数

5.加载模块

6. 清空iptables、关闭防火墙、关闭交换空间、禁用selinux

7. 安装ipvs与时钟同步

8.配置docker的yum源、安装docker及开机自启

 3、安装kubeadm、kubelet、kubectl

4、部署master节点

1.生成yaml文件及初始化集群

2. 拉取网络组件配置文件 - calico

3.部署calico

4.错误处理

5、worker节点加入集群

6、k8s自动部署环境脚本 

7、worker端运行kubectl 


一、实验规划

1、规划表

设备

主机名

IP

角色

虚拟机1(VM1)

K8s01

192.168.248.20

Master

虚拟机2(VM2)

K8s02

192.168.248.21

Node

虚拟机3(VM3)

K8s03

192.168.248.22

Node

默认已自行配置过IP地址,配置IP方式有很多:netplan、nmtui、nmcli、networking等方式 

2、安装前宿主机检查

1.配置主机名

VM1执行

[root@localhost ~]# hostnamectl set-hostname k8s01

VM2执行

[root@localhost ~]# hostnamectl set-hostname k8s02

VM3执行

[root@localhost ~]# hostnamectl set-hostname k8s03

配置完成后,退出当前连接的远程终端,重新登录自动生效

2.制作ssh免密(VM1中执行)

[root@k8s01 ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -N ''    #生成公钥
#-t rsa指定使用RSA算法生成密钥对
#-f ~/.ssh/id_rsa指定将私钥保存在~/.ssh/id_rsa文件中
#-N ''设置空密码以保护私钥文件

[root@k8s01 ~]# ls /root/.ssh/  #查看公私钥是否生成
id_rsa  id_rsa.pub

[root@k8s01 ~]# for i in 192.168.248.{20..22}; do ssh-copy-id root@$i; done #将私钥拷贝给需要远程的主机

 3.修改hosts 文件

echo -e "192.168.248.20 k8s01
192.168.248.21 k8s02
192.168.248.22 k8s03" >> /etc/hosts

4. 修改内核相关参数

echo -e "net.ipv4.ip_forward = 1
vm.swappiness = 0
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
fs.may_detach_mounts = 1" > /etc/sysctl.d/k8s.conf
#net.ipv4.ip_forward:将IPv4转发功能开启,允许系统作为路由器转发IP数据包
#net.bridge.bridge-nf-call-ip6tables = 1: 允许通过网桥的IPV6数据包进行iptables规则的处理
#net.bridge.bridge-nf-call-iptables = 1:  允许通过网桥的IPV4数据包进行iptables规则的处理
#fs.may_detach_mounts = 1: 在卸载文件系统时允许解除挂载

5.加载模块

echo -e "#!/bin/bash
modprobe -- br_netfilter
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
" >> /etc/sysconfig/modules/ipvs.modules
#br_netfilter:      加载br_netfilter内核模块,它是用于网桥与网络层之间的过滤器。
#ip_vs:            加载ip_vs内核模块,它提供IPVS(IP Virtual Server)功能,用于实现负载均衡。
#ip_vs_rr:         加载ip_vs_rr内核模块,它是IPVS中的一种负载均衡调度算法,使用轮询方式进行负载均衡。
#ip_vs_wrr:        加载ip_vs_wrr内核模块,它是IPVS中的一种负载均衡调度算法,使用加权轮询方式进行负载均衡。
#ip_vs_sh:         加载ip_vs_sh内核模块,它是IPVS中的一种负载均衡调度算法,使用哈希方式进行负载均衡。
#nf_conntrack_ipv4:加载nf_conntrack_ipv4内核模块,它是IPv4连接跟踪模块,用于跟踪网络连接状态
  chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules &&  lsmod | grep -E "ip_vs|nf_conntrack_ipv4" > /dev/null

6. 清空iptables、关闭防火墙、关闭交换空间、禁用selinux

iptables -F 
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config 
systemctl disable --now firewalld > /dev/null 
swapoff -a  
sed -i 's@/dev/mapper/centos-swap@#/dev/mapper/centos-swap@g' /etc/fstab

7. 安装ipvs与时钟同步

yum install -y ipset ipvsadm bash-completion sshpass 
yum install -y chrony –y > /dev/null 
systemctl enable --now chronyd 
sleep 20 
chronyc sources

8.配置docker的yum源、安装docker及开机自启

yum install wget -y
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7 -y
mkdir -p /etc/docker
echo -e '{
  "registry-mirrors": ["https://u6xekpvk.mirror.aliyuncs.com"]
}' > /etc/docker/daemon.json #替换镜像加速器
systemctl daemon-reload && systemctl restart docker && systemctl enable docker
sleep 3
systemctl status docker

 3、安装kubeadm、kubelet、kubectl

yum install -y kubelet-1.19.16 kubeadm-1.19.16 kubectl-1.19.16
systemctl enable kubelet --now

4、部署master节点

1.生成yaml文件及初始化集群

kubeadm config print init-defaults --component-configs KubeletConfiguration --component-configs KubeProxyConfiguration > kubeadm.yaml #生成kubeadm的yaml文件
sed -i "/advertiseAddress:/ s/:.*/: ${MASTER_IP}/" /root/kubeadm.yaml
sed -i "/imageRepository:/ s%:.*%: registry.aliyuncs.com/google_containers%" /root/kubeadm.yaml
sed -i "/serviceSubnet:/ a \ \ podSubnet: 10.244.0.0/16" /root/kubeadm.yaml
sed -i '/mode: ""/ c mode: "ipvs"' /root/kubeadm.yaml
kubeadm config images pull --config /root/kubeadm.yaml
kubeadm init --config kubeadm.yaml | tee k8s.txt
#出现如下内容说明初始化成功
"To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.248.20:6443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:233778c959cc5aa1e42813fe04e8a492c8c9aba48882b757d49f617648e7ff65"

#修改YAML文件
eval `sed -n '/mkdir/ s/  //p' /root/k8s.txt`
eval `sed -n "/sudo cp/ s/  //p" /root/k8s.txt`
eval `sed -n "/sudo chown/ s/  //p" /root/k8s.txt`
curl https://docs.projectcalico.org/archive/v3.20/manifests/calico.yaml -O
kubectl apply -f calico.yaml

此为worker节点假如集群的命令

 根据提示内容命令,添加环境变量

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

2. 拉取网络组件配置文件 - calico

curl https://docs.projectcalico.org/archive/v3.20/manifests/calico.yaml -O

3.部署calico

kubectl apply -f calico.yaml
kubectl get pods -A #当所有pod都为runing 1/1时表示部署完成

4.错误处理

pod状态一直处于”ContainerCreating“ 或其它状态,通过如下命令强制删除pod,删除后会自动创建新的pod

kubectl delete -n kube-system  pods 容器ID  --force --grace-period=0

5、worker节点加入集群

kubeadm join 192.168.248.20:6443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:233778c959cc5aa1e42813fe04e8a492c8c9aba48882b757d49f617648e7ff65"
#注意!!!使用init时生成出来的提示命令

6、k8s自动部署环境脚本 

自动部署单master节点 + 双worker脚本

7、worker端运行kubectl 

加入完成后,系统提示使用命令“kubectl get node”查看集群状态,输入命令后,系统会有以下报错:

[root@k8s02 ~]# kubectl get nodes
The connection to the server localhost:8080 was refused - did you specify the right host or port?

使用以下命令将master节点的admin.conf文件拷贝到当前节点

[root@k8s02 ~]# mkdir -p $HOME/.kube
[root@k8s02 ~]# scp root@192.168.248.20:/etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s02 ~]# chown $(id -u):$(id -g) $HOME/.kube/config

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【算法挨揍日记】day03——双指针算法_有效三角形的个数、和为s的两个数字

611. 有效三角形的个数 611. 有效三角形的个数https://leetcode.cn/problems/valid-triangle-number/ 题目描述: 给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。 解题思路: 本题是一个关于三角形是否能成立…

【数仓建设系列之一】什么是数据仓库?

一、什么是数据仓库? 数据仓库(Data Warehouse,简称DW)简单来讲,它是一个存储和管理大量结构化和非结构化数据的存储集合,它以主题为向导,通过整合来自不同数据源下的数据(比如各业务数据,日志文件数据等)…

Azure使用CLI创建VM

使用CLI创建VM之前,确保资源中的IP资源已经释放掉了,避免创建的过程中没有可以利用的公共IP地址打开 cloudshell ,并输入创建CLI的命令如下,-n指定名称,-g指定资源组,image指定镜像,admin-usernam指定用户名…

C++音乐播放系统

C音乐播放系统 音乐的好处c发出声音乐谱与赫兹对照把歌打到c上 学习c的同学们都知道,c是一个一本正经的编程语言,因该没有人用它来做游戏、做病毒、做…做…做音乐播放系统吧!! 音乐的好处 提升情绪:音乐能够影响我们…

Spring Framework中的Bean生命周期

目录 一.Bean生命周期的简介 1.基本概念 2.Spring生命周期的几大阶段 3.注意点及小结 4.生活案例 5.Spring容器管理JavaBean的初始化过程 二. Bean的单例选择与多例选择 1.单例选择与多例选择的优缺点 1.1单例模式的优点: 1.2单例模式的缺点: 1…

insightface安装过程中提示 Microsoft Visual C++ 14.0 or greater is required.

pip install insightface安装过程中提示 Microsoft Visual C 14.0 or greater is required.Get it with "Microsoft C Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/ 根据提示网站访问官网下载生成工具 打开软件后会自动更新环境&#…

Ceph入门到精通-Aws Iam(user,role,group,policy,resource)架构图和快速入门

-- Aws Iam(identity,user,role,group,policy,resource,)架构图和快速入门. 【官网】:Cloud Computing Services - Amazon Web Services (AWS) 应用场景 aws 云服务运维,devops过程中经常涉及各项服务,权限,角色的处理。 为了更好的使用各项…

leetcode 279. 完全平方数

2023.8.18 与零钱兑换相似&#xff0c;本题属于完全背包问题&#xff1a;完全平方数为物品&#xff0c;整数n为背包。 直接上代码&#xff1a; class Solution { public:int numSquares(int n) {vector<int> dp(n1 , INT_MAX);dp[0] 0;for(int i1; i*i<n; i){for(in…

BIO、NIO和AIO

一.引言 何为IO 涉及计算机核心(CPU和内存)与其他设备间数据迁移的过程&#xff0c;就是I/O。数据输入到计算机内存的过程即输入&#xff0c;反之输出到外部存储&#xff08;比如数据库&#xff0c;文件&#xff0c;远程主机&#xff09;的过程即输出。 I/O 描述了计算机系统…

AMD fTPM RNG的BUG使得Linus Torvalds不满

导读因为在 Ryzen 系统上对内核造成了困扰&#xff0c;Linus Torvalds 最近在邮件列表中表达了对 AMD fTPM 硬件随机数生成器的不满&#xff0c;并提出了禁用该功能的建议。 因为在 Ryzen 系统上对内核造成了困扰&#xff0c;Linus Torvalds 最近在邮件列表中表达了对 AMD fTPM…

原生js获取今天、昨天、近7天的时间(年月日时分秒)

有的时候我们需要将今天,昨天,近7天的时间(年月日时分秒)作为参数传递给后端,如下图: 那怎么生成这些时间呢?如下代码里,在methods里的toDay方法、yesterDay方法、weekDay方法分别用于生成今天、昨天和近7天的时间: <template><div class="box"&…

【校招VIP】测试方案之测试用例分析

考点介绍 测试用例是测试岗面试和工作后的核心&#xff0c;在面试里对测试用例的分析是高频考查点。但是很多同学因为没有真实的商业产品需求&#xff0c;只能简单的看别人的用例学习&#xff0c;导致面试时被一个陌生问题卡住。 比如最简单的用户名密码输入&#xff0c;在商业…

⛳ Docker - Centos 安装配置

目录 ⛳ Docker - Centos 安装配置&#x1f3ed; Docker 安装&#xff1a;&#x1f4e2; 一、安装依赖包&#x1f4ac; 二、添加 Docker 下载源地址&#x1f43e; 三、更新yum缓存&#x1f463; 四、安装Docker&#x1f4bb; 五、启动Docker&#x1f381; 六、查看Docker状态和…

vue3 + antv/x6 实现拖拽侧边栏节点到画布

前篇&#xff1a;vue3ts使用antv/x6 自定义节点 前篇&#xff1a;vue3antv x6自定义节点样式 1、创建侧边栏 用antd的menu来做侧边栏 npm i --save ant-design-vue4.x//入口文件main.js内 import Antd from ant-design-vue; import App from ./App; import ant-design-vue/…

OpenFOAM的fvOptions

采用OpenFoam中的fvOptions /*--------------------------------*- C -*----------------------------------*\ |\\ / F ield | OpenFOAM: The Open Source CFD Toolbox\\ / O peration | Website: https://openfoam.org\\ / A n…

安卓框架中的常见问题汇总

目录 1.安卓操作系统的组件结构图如下 2.问题汇总 1.安卓操作系统的组件结构图如下 2.问题汇总 问题1&#xff1a;安卓框架中的库和应用程序框架之间什么关系&#xff1f; 在安卓系统中&#xff0c;应用程序框架层&#xff08;Application Framework&#xff09;是核心应用程…

ADC静态特性测试

测试环境搭建&#xff1a; 码密度分析法的局限性 更新&#xff1a; MATLAB R2020a之后的版本&#xff0c;更新了函数 “inldnl()”&#xff0c;可以自动计算INL和DNL。具体用法看MATLAB说明文档即可。

【FAQ】调用视频汇聚平台EasyCVR的iframe地址,视频无法播放的原因排查

有用户反馈&#xff0c;在调用iframe地址后嵌入用户自己的前端页面&#xff0c;视频无法播放并且要求登录。 安防监控视频汇聚平台EasyCVR基于云边端一体化架构&#xff0c;具有强大的数据接入、处理及分发能力&#xff0c;可提供视频监控直播、云端录像、视频云存储、视频集中…

【面试题】2、Docker和Spring相关

1、Docker是什么&#xff1f; &#xff08;1&#xff09;Docker是一个快速交互、运行应用的技术&#xff0c;可以将程序及其依赖、运行环境一起打包为一个镜像&#xff0c;该镜像可以迁移到任意的Linux操作系统 &#xff08;2&#xff09;运行时利用沙箱机制形成隔离容器&…

【Spring Cloud 八】Spring Cloud Gateway网关

gateway网关 系列博客背景一、什么是Spring Cloud Gateway二、为什么要使用Spring Cloud Gateway三、 Spring Cloud Gateway 三大核心概念4.1 Route&#xff08;路由&#xff09;4.2 Predicate&#xff08;断言&#xff09;4.3 Filter&#xff08;过滤&#xff09; 五、Spring …