centos7安装kubernets集群

news2024/11/25 11:46:26

一、准备工作

准备三台虚拟机,centos7系统

二、系统配置

1. 修改主机名

# 三台机器都需要执行
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2

2. 修改hosts文件

# 三台机器都需要执行
[root@k8s-master ~]# vim /etc/hosts
192.168.10.129 k8s-master
192.168.10.134 k8s-node1
192.168.10.136 k8s-node2

3. 关闭防火墙和SELinux

# 三台机器都需要执行
[root@k8s-master ~]# setenforce 0 
[root@k8s-node1 ~]# systemctl stop firewalld.service 
[root@k8s-node1 ~]# systemctl disable firewalld.service

4. 关闭swap

注释 /dev/mapper/rhel-swap这一行

# 三台机器都需要执行
[root@k8s-master ~]# vim /etc/fstab 
#/dev/mapper/rhel-swap   none                    swap    defaults        0 0

5.修改网卡配置

# 三台机器都需要执行
[root@k8s-master ~]# vim /etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

[root@k8s-master ~]# sysctl --system

6. 系统模块配置

# 三台机器都需要执行
[root@k8s-master ~]# modprobe br_netfilter    #加载系统模块
[root@k8s-master ~]# lsmod | grep br_netfilter

7. 免密登录

# 三台机器都需要执行
[root@k8s-master ~]ssh-keygen 
[root@k8s-master ~]ssh-copy-id root@192.168.10.129
[root@k8s-master ~]ssh-copy-id root@192.168.10.134
[root@k8s-master ~]ssh-copy-id root@192.168.10.136

8. 更新并安装依赖

# 三台机器都需要执行
yum -y update
yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp

9.同步时间

# 三台机器都需要执行
yum install ntpdate -y
ntpdate time.windows.com

三、下载相关软件

1. 安装docker(所有机器)

# 1、卸载系统之前的 docker(如果装过的话)
sudo yum remove docker \
	docker-client \
	docker-client-latest \
	docker-common \
	docker-latest \
	docker-latest-logrotate \
	docker-logrotate \
	docker-engine

# 2、安装必要依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 3、设置 docker repo 的 yum 位置
sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 4、更新yum软件包索引
yum makecache fast

# 5、安装docker(指定版本)
sudo yum install -y docker-ce-18.09.0 docker-ce-cli-18.09.0 containerd.io

# 6、启动docker并设置开机启动
sudo systemctl start docker && sudo systemctl enable docker

# 7、设置阿里云的docker镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://t3irn0eu.mirror.aliyuncs.com"]
}
EOF
# 重启服务器
sudo systemctl daemon-reload
sudo systemctl restart docker

# 8、测试docker安装是否成功
sudo docker -v

2. 安装kubelet、kubeadm、kubectl(所有机器)

下载和配置

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

#2. 安装kubernetes依赖
yum install -y kubernetes-cni-0.7.5-0

#3. 安装 kubelet
##kubelet要先安装再安装kubeadm和kubectl,如果已经安装一起安装了可以先yum -y remove kubelet
yum install -y kubelet-1.14.0-0

#4. 安装kubeadm和kubectl(所有机器)
yum install -y kubeadm-1.14.0-0 kubectl-1.14.0-0

#5. docker和k8s设置同一个cgroup
# 打开daemon.json
vi /etc/docker/daemon.json
# 追加
"exec-opts": ["native.cgroupdriver=systemd"],
# 重启docker
systemctl restart docker

#6. 配置kubelet(报:“`sed:无法读取10-kubeadm.conf:没有那个文件或目录`”,不用管,正常情况)
[root@localhost ~]# sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

#7. 启动kubelet,并设置开机启动kubelet
[root@localhost ~]# systemctl enable kubelet && systemctl restart kubelet


创建kubeadm.sh脚本,用于拉取镜像/打tag/删除原有镜像

#!/bin/bash
set -e
KUBE_VERSION=v1.14.0
KUBE_PAUSE_VERSION=3.1
ETCD_VERSION=3.3.10
CORE_DNS_VERSION=1.3.1

GCR_URL=k8s.gcr.io
ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers

images=(kube-proxy:${KUBE_VERSION}
kube-scheduler:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-apiserver:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd:${ETCD_VERSION}
coredns:${CORE_DNS_VERSION})

for imageName in ${images[@]} ; do
  docker pull $ALIYUN_URL/$imageName
  docker tag  $ALIYUN_URL/$imageName $GCR_URL/$imageName
  docker rmi $ALIYUN_URL/$imageName
done

# 执行脚本
chmod +x kubeadm.sh
./kubeadm.sh

# 查看镜像
docker images

四、初始化massre(只在主节点操作)

kubeadm init

# kubernetes-version:版本
# apiserver-advertise-address:主节点ip;
# pod-network-cidr:pod的ip,可以不指定,没什么影响
kubeadm init --kubernetes-version=1.14.0 --apiserver-advertise-address=192.168.56.100 --pod-network-cidr=10.244.0.0/16
# 注意【若要重新初始化集群状态:kubeadm reset,然后再进行上述操作】

子节点加入集群

master初始化完成后,会输出以下内容:
在这里插入图片描述

上面命令在各个node上执行,将节点加入集群

kubeadm join 192.168.1.80:6443 --token qf8vd2.shxseyabg0j23fa6 \
    --discovery-token-ca-cert-hash sha256:e074616391ce94ff0f718c66bca2e01465132de4dcb57d261556a7e2039822bb 

日志中的这三条命令需要在主节点执行一下

# 日志中的这三条命令需要在主节点执行一下
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

查看集群信息、pod运行情况

# 查看集群信息
[root@master-kubeadm-k8s ~]# kubectl cluster-info
Kubernetes master is running at https://192.168.56.100:6443
KubeDNS is running at https://192.168.56.100:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

# 运行在主节点的组件情况,我们看到有的在Running,有的正在准备
[root@master-kubeadm-k8s ~]# kubectl get pods -n kube-system
NAME                        READY   STATUS    RESTARTS   AGE
coredns-fb8b8dccf-jm4fj     0/1     Pending   0          6m18s
coredns-fb8b8dccf-qwlnj     0/1     Pending   0          6m18s
etcd-m                      1/1     Running   0          5m36s
kube-apiserver-m            1/1     Running   0          5m23s
kube-controller-manager-m   1/1     Running   0          5m28s
kube-proxy-mjmp9            1/1     Running   0          6m18s
kube-scheduler-m            1/1     Running   0          5m20s

我们发现coredns没有启动,需要安装网络插件。

# 健康检查
[root@master-kubeadm-k8s ~]# curl -k https://localhost:6443/healthz
ok

一定确保全部Running状态,再安装网络插件!(除了前两个)

# 在k8s中安装calico
kubectl apply -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml

# 确认一下calico是否安装成功
kubectl get pods --all-namespaces -w

多等一会,我们发现,所有的pod都是Running状态了。

在master节点上检查集群信息

[root@m ~]# kubectl get nodes
NAME   STATUS   ROLES    AGE     VERSION
m      Ready    master   15h     v1.14.0
w1     Ready    <none>   7m5s    v1.14.0
w2     Ready    <none>   6m55s   v1.14.0


体验

部署一个nginx svc

kubectl create deployment nginx --image=nginx
$  $ kubectl get pod,svc

映射端口

kubectl expose deployment nginx --port=80 --type=NodePort

查询pod

[root@k8s-master ~]# kubectl get pod,svc
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-65f88748fd-crc89   1/1     Running   0          18m

NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        95m
service/nginx        NodePort    10.105.250.145   <none>        80:30306/TCP   14m

访问页面

任意一个节点的ip:30306 即可进入nginx初始页面

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

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

相关文章

微信小程序开发教学系列(2)- 抖音小程序开发基础

2.1 抖音小程序的基本组成部分 抖音小程序的目录结构非常简单&#xff0c;主要包含以下几个核心文件和文件夹&#xff1a; app.json 文件&#xff1a;用于配置小程序的全局配置&#xff0c;包括窗口样式、页面路径、网络请求设置等等。pages 文件夹&#xff1a;用于存放所有的…

智慧工地:实现作业区域安全管控

智慧工地是围绕工程现场人、机、料、法、环及施工过程中质量、安全、进度、成本等各项数据满足工地多角色、多视角的有效监管,实现工程建设管理的降本增效。 建设工程安全文明施工与质量提升,全方位的监测施工人员、各类器械设备、消防安全隐患&#xff0c;并提前对风险进行预警…

高校网络安全体系建设及零信任安全架构应用的探索

网络安全是高校信息化建设的重中之重&#xff0c;它同时也随着高校信息化的快速发展而不断面临新的挑战。因此&#xff0c;要用发展的眼光去看待网络安全&#xff0c;体系化推进网络安全体系建设。山东师范大学校园信息化经过10多年的建设发展&#xff0c;在网络安全上探索出了…

博客系统(升级(Spring))(一)创建数据库,创建实例化对象,统一数据格式,统一报错信息

博客系统&#xff08;一&#xff09; 博客系统创建项目 建立数据库结构链接服务器和数据库和Redis 创建实例化对象统一数据结构结构 统一报错信息 博客系统 博客系统是干什么的&#xff1f; CSDN就是一个典型的博客系统。而我在这里就是通过模拟实现一个博客系统&#xff0c;这…

SAP中的新旧事务码

SAP中的新旧事务码 SAP随着新版本的发布&#xff0c;我们知道sap已经更新了很多的程序和TCODE。sap提供了很多新的TCODE来替换旧的TCODE&#xff0c;新TCODE有很多的新特性和新功能。在这个这种情况下&#xff0c;很多旧TCODE就会被废弃。我们如何查找这个替换呢&#xff1f; …

如何使用OpenGL画出ROS rviz那样的点云可视化效果

【请尊重原创&#xff01;转载和引用文章内容务必注明出处&#xff01;未经许可上传到某文库或其他收费阅读/下载网站赚钱的必追究责任&#xff01;】 ROS rviz可以将点云以多种形式渲染出来比较漂亮&#xff0c;尤其是根据intensity渲染点云不同的色彩和亮度的功能比较好&…

List集合详解

目录 1、集合是什么&#xff1f; 1.1、集合与集合之间的关系 2、List集合的特点 3、遍历集合的三种方式 3.1、foreach(增强佛如循环遍历) 3.2、for循环遍历 3.3、迭代器遍历 4、LinkedList和ArrayList的区别 4.1、为什么ArrayList查询会快一些&#xff1f; 4.2、为什么LinkedLi…

2023大数据挑战赛全国六强团队获奖经验+ppt分享(五)

团队名称 会魔法的老人 团队成员 刘克林&#xff08;重庆邮电大学&#xff09; 敖宇&#xff08;重庆邮电大学&#xff09; 杨敏&#xff08;重庆邮电大学&#xff09; 团队名次 全国第二名 赛题描述说明介绍 2023大数据挑战赛赛题说明决赛评分标准回顾 参赛分享与收获 本次大赛…

x86体系结构(WinDbg学习笔记)

寄存器 eaxAccumulator累加器ebxBase register基寄存器ecxCounter register计数器寄存器edxData register - can be used for I/O port access and arithmetic functions数据寄存器-可用于I/O端口访问和算术函数esiSource index register源索引寄存器ediDestination index reg…

第50节:cesium 绘制指定类型区域(含源码+视频)

结果示例: 完整源码: <template><div class="viewer"><el-button-group class="top_item"><el-button type=

fatedier/frp内网穿透详细安装及使用教程

《参考地址》 fatedier/frp是一款开源的主要使用Go语言开发的内网穿透工具。主要分为服务端&#xff08;frps&#xff09;和客户端&#xff08;frpc&#xff09;。 简单理解&#xff1a;服务端&#xff08;frps&#xff09;就是部署到公网ip服务器提供给客户端&#xff08;frpc…

MySQL中的字符集和排序规则

关键字: 字符集&#xff0c;utf8mb4&#xff0c;emoj 众所周知&#xff0c;mysql的utf8是假的utf8&#xff0c;没法存emoj等字符。要设置为utf8mb4... 问题 同事给了一段Update语句&#xff0c;更新某张表idxxx的某个字段; CREATE TABLE table_name ( id int(11) NOT NULL AUT…

OLED透明屏厚度:引领未来显示技术的革命

OLED透明屏作为一种未来显示技术&#xff0c;其薄度在整个行业中具有重要意义。 在这篇文章中&#xff0c;尼伽将详细介绍OLED透明屏厚度的优势、技术挑战以及应用案例&#xff0c;旨在为读者全面了解OLED透明屏的发展前景。 一、OLED透明屏厚度的优势 OLED透明屏采用柔性基板…

在FPGA上快速搭建以太网

在本文中&#xff0c;我们将介绍如何在FPGA上快速搭建以太网 &#xff08;LWIP &#xff09;。为此&#xff0c;我们将使用 MicroBlaze 作为主 CPU 运行其应用程序。 LWIP 是使用裸机设计以太网的良好起点&#xff0c;在此基础上我们可以轻松调整软件应用程序以提供更详细的应用…

zemax多重结构仿真分光板

光路中的分光板需要使用多重结构来仿真 首先做一个倾斜的分光板&#xff0c;然后用多重结构表现两个光路 基础设置&#xff1a; 效果&#xff1a; 设置平板倾斜45度&#xff1a; 1、表面设置为倾斜面 2、y方向正切设置为1 效果&#xff1a; 设置多重结构&#xff0c;这里是…

【100天精通Python】Day56:Python 数据分析_Pandas数据清洗和处理(删除填充插值,数据类型转换,去重,连接与合并)

目录 数据清洗和处理 1.处理缺失值 1.1 删除缺失值&#xff1a; 1.2 填充缺失值&#xff1a; 1.3 插值&#xff1a; 2 数据类型转换 2.1 数据类型转换 2.2 日期和时间的转换&#xff1a; 2.3 分类数据的转换&#xff1a; 2.4 自定义数据类型的转换&#xff1a; 3 数…

数学分析:势场

首先从散度的物理解释开始。首先&#xff0c;在球内的向量场的散度的积分&#xff0c;等于它在球边界上的流量的积分。所以根据积分中值定理&#xff0c;我们可以这么理解散度&#xff0c;它就是这个体积内的速度场的平均密度。而速度场只和源有关&#xff0c;所以它表示的某个…

Prometheus+Grafana 搭建应用监控系统

一、背景 完善的监控系统可以提高应用的可用性和可靠性&#xff0c;在提供更优质服务的前提下&#xff0c;降低运维的投入和工作量&#xff0c;为用户带来更多的商业利益和客户体验。下面就带大家彻底搞懂监控系统&#xff0c;使用Prometheus Grafana搭建完整的应用监控系统。 …

Leetcode---361周赛

题目列表 2843. 统计对称整数的数目 2844. 生成特殊数字的最少操作 2845. 统计趣味子数组的数目 2846. 边权重均等查询 一、统计对称整数的数目 这题看一眼数据范围&#xff0c;直接就可以开始暴力求解了&#xff0c;按照题目要求模拟就行&#xff0c;代码如下 class Solu…

使用纯C语言定义通用型数据结构的方法和示例

文章目录 前言以实现优先队列来描述实现思想基本类型的包装类型比较函数演示总结 前言 最近一段时间在复习数据结构和算法&#xff0c;用的C语言&#xff0c;不得不说&#xff0c;不学个高级语言再回头看C语言根本不知道C语言的强大和完美&#xff0c;不过相比之下也有许多不便…