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/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configYou 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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

brew+nginx配置静态文件服务器

背景 一下子闲下来了,了解的我的人都知道我闲不下来。于是,我在思考COS之后,决定自己整一个本地的OSS,实现静态文件的访问。那么,首屈一指的就是我很熟的nginx。也算是个小复习吧,复习一下nginx代理静态文…

Gitee+Jenkins(docker版)自动推送并部署Springboot项目到远程服务器

如果要参考gitlab配置请参考GitlabWebhook自动推送并更新Springboot项目 Gitlab的配置部分 环境介绍 Jenkins服务器(Centos7.6): docker安装的jenkins,参考Jenkins(docker安装)部署Springboot项目JDK1.8Maven3.6.3 注意docker安装的jenkins,而且是较新的版本,所以jenkins容器…

探讨uniapp的网络通信问题

uni-app 中有很多原生的 API,其中我们经常会用到的肯定有:uni.request(OBJECT) method 有效值 注意:method有效值必须大写,每个平台支持的method有效值不同,详细见下表。 success 返回参数说明 data 数据说明 最终…

第一个ArkTS项目实践-鸿蒙ArkTS

第一个ArkTS项目实践-ArkTS 第一个ArkTS项目实践-ArkTS自定义组件的组成配置属性与布局配置属性布局 改变组件状态循环渲染列表数据代码ToDoItem组件ToDoList页面 效果参考资料 第一个ArkTS项目实践-ArkTS 本篇文章是官网上视频对ArkTS开发实践的第一个视频,主要是引…

鸿蒙剥离 AOSP 不兼容 Android 热门问题汇总,不吹不黑不吵

上周发了一篇 《鸿蒙终于不套壳了?纯血 HarmonyOS NEXT 即将到来》的相关资讯,没想到大家「讨(fa)论(xie)」的热情很高,莫名蹭了一波流量,虽然流量对我来说也没什么用,但…

点击base64编码过的图片在另一个页面显示

开始的代码是这样的,新开一个窗口显示经过base64编码后的图片,但是url太长了显示失败。 openImage(imgSrc) {window.open(imgSrc, _blank); }, 解决方法:这段代码接收一个Base64编码的图像数据,把它转换为一个Blob对象。 Blob&…

warning: remember to run ‘libtool --finish /usr/local/1/php-7.4.29/libs

ubuntu上php7.4.33编译安装完成后警告报错,如下所示 # /usr/local/apache2/apr/build-1/libtool --finish /usr/local/soft/php-7.4.33/libs # vim /etc/ld.so.conf.d/local.conf /usr/local/lib /usr/lib64 # ldconfig 或者安装依赖服务,重新编译 #…

Unity3D高级编程:主程手记学习1

第一章 软件架构 Untiy 分层设计 分层后再分治

使用基于jvm-sandbox的对三层嵌套类型的改造

使用基于jvm-sandbox的对三层嵌套类型的改造 问题背景 先简单介绍下基于jvm-sandbox的imock工具,是Java方法级别的mock,操作就是监听指定方法,返回指定的mock内容。 jvm-sandbox 利用字节码操作和自定义类加载器的技术,将原始方法…

企业直播MR虚拟直播(MR混合现实直播技术)视频介绍

到底什么是企业直播MR虚拟直播(MR混合现实直播技术)? 企业直播MR虚拟直播新玩法(MR混合现实直播技术) 我的文章推荐: [视频图文] 线上研讨会是什么,企业对内对外培训可以用线上研讨会吗&#x…

Python学习笔记_基础篇(三)_数据类型之列表

一.基本数据类型 整数:int 字符串:str(注:\t等于一个tab键) 布尔值: bool 列表:list (元素的集合) 列表用[] 元祖:tuple 元祖用() 字典:dict 注&a…

【量化课程】08_2.深度学习量化策略基础实战

文章目录 1. 深度学习简介2. 常用深度学习模型架构2.1 LSTM 介绍2.2 LSTM在股票预测中的应用 3. 模块分类3.1 卷积层3.2 池化层3.3 全连接层3.4 Dropout层 4. 深度学习模型构建5. 策略实现 1. 深度学习简介 深度学习是模拟人脑进行分析学习的神经网络。 2. 常用深度学习模型架…