k8s1.18.0完整部署教程

news2024/11/14 20:47:05

k8s的官网地址:https://kubernetes.io/docs

Kubernetes 也称为 K8s,是一个开源系统,用于自动化容器化应用程序的部署、扩展和管理。

K8s通过各种资源对象来管理pod相关的功能,借助pod本身的功能实现大规模容器应用的自动化管理,实际上K8s就是一个大规模的容器应用管理平台

1.搭建k8s集群

本文使用kubeadm的方式来安装k8s

安装 kubeadm |Kubernetes的kubeadm安装的官方文档:安装 kubeadm |Kubernetes的

1.1k8s节点规划

主机名ip
master192.168.226.140
node1192.168.226.141
node2192.168.226.142

1.2基础环境配置

1.检查操作系统的版本

# 此方式下安装kubernetes集群要求Centos版本要在7.5或之上
[root@master ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

2.配置阿里云yum源

centos7.9的yum源不可用,更换一下

#下载repo文件
wget http://mirrors.aliyun.com/repo/Centos-7.repo

# 备份并替换系统的repo文件
cp Centos-7.repo /etc/yum.repos.d/
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
mv Centos-7.repo CentOS-Base.repo

# 执行yum源更新命令
yum clean all
yum makecache
yum update -y 

3.配置三台主机的静态ip

 分别编辑三台主机的/etc/sysconfig/network-scripts/ifcfg-ens33文件

1)文件内容要根据vmware的配置更改,具体如下:

选择虚拟网络编辑器

选择VMnet8的NAT设置

可以看到ip地址是192.168.226.0这个网段的,所以下面配置静态ip也要在这个网段才能上网

2)接下来分别编辑master,node1,node2的/etc/sysconfig/network-scripts/ifcfg-ens33文件

可以看到默认配置是dhcp,这样的话每次重启虚拟机ip地址会更改,如果IP更改下面在配置ip地址映射的话会很不方便,所以要配置静态ip

master主机配置

[root@master ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens3                                                                 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=5d60f1f8-5796-49c3-bd6d-6fcb36badf81
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.226.140
GATEWAY=192.168.226.2
NETMASK=255.255.255.0
PEERD=no

node1主机配置

[root@node1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33                                                                 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=87c335e1-d0fc-4805-8b23-7ccd66ca2821
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.226.141
GATEWAY=192.168.226.2
NETMASK=255.255.255.0
PEERD=no

node2主机配置

[root@node2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33                                                                 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=70acb8ac-608a-443b-a59d-5b936bf6160f
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.226.142
GATEWAY=192.168.226.2
NETMASK=255.255.255.0
PEERD=no

然后重启机器让ip配置生效,可以通过ip addr查看是否生效

之后通过ping www.baidu.com检查网络是否正常,此时三台机器网络都不可用

3)修改三台主机的/etc/resolv.conf文件,配置DNS服务器

# Generated by NetworkManager
# 三台主机在resolv.conf文件都增加下面这一行
nameserver 114.114.114.114

此时三台主机的网络都正常可用了

4.修改主机名配置hosts映射

修改主机名

# 四台服务器分别进入/etc/hostname文件中,分别修改主机名为master、node1、node2、node3

# 查看当前主机名

hostname

配置hosts映射

# 配置hosts文件,添加主机名和ip地址映射

vim /etc/hosts

# 修改完第一台机器的ip映射后,然后分发到各个不同的机器上 xxx代表目标服务器的主机名

scp /etc/hosts root@xxx:/etc/

 

5.替换systemctl(如果systemctl不能用)

下面使用systemctl的时候会出现如下情况,就需要进行替换,否则不用

#在k8s集群每台机器分别执行

#1.备份原来的systemctl文件

mv /usr/bin/systemctl /usr/bin/systemctl.old

#2.重新生成文件

#打开https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl.py这个网站,将页面的所有内容都复制,然后在使用VIM命令打开systemctl文件,并将刚才复制的东西粘贴进去并保存

vim /usr/bin/systemctl

chmod +x /usr/bin/systemctl

6.禁用firewalld服务

#在k8s集群每台机器分别执行
# 1 关闭firewalld服务
[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld

#查看防火墙是否开启
firewall-cmd --state

7.禁用selinux

#在k8s集群每台机器分别执行
# 编辑 /etc/selinux/config 文件,修改SELINUX的值为disable
# 注意修改完毕之后需要重启linux服务
SELINUX=disabled

# 查看状态
sestatus

 

8.关闭swap

#k8s每台机器分别执行
# 编辑分区配置文件/etc/fstab,注释掉swap分区一行
# 注意修改完毕之后需要重启linux服务
vim /etc/fstab
注释掉 /dev/mapper/centos-swap swap
# /dev/mapper/centos-swap swap

9. 设置ipv4和v6的流量链接

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

# 生效
sysctl --system

10.同步时间

yum -y install ntpdate
ntpdate time.Windows.com

基础配置完成重启机器

1.3安装基础软件

1.安装docker(所有节点)

# 1、切换镜像源
[root@master ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

# 2、查看当前镜像源中支持的docker版本
[root@master ~]# yum list docker-ce --showduplicates

# 3、安装特定版本的docker-ce
# 必须制定--setopt=obsoletes=0,否则yum会自动安装更高版本
[root@master ~]# yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7 -y

# 4、添加一个配置文件
#Docker 在默认情况下使用Vgroup Driver为cgroupfs,而Kubernetes推荐使用systemd来替代cgroupfs
[root@master ~]# mkdir /etc/docker
[root@master ~]# cat <<EOF> /etc/docker/daemon.json
{
	"exec-opts": ["native.cgroupdriver=systemd"],
}
EOF

# 5、启动dokcer
[root@master ~]# systemctl restart docker
[root@master ~]# systemctl enable docker

# 6.测试
docker run hello-world

此时无法拉取镜像,会出现如下错误

[root@master ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Pulling fs layer
docker: error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/d2/d2c94e258dcb3c5ac2798d32e1249e42ef01cba4841c2234249495f87264ac5a/data?verify=1723092638-fv94jBucnZv8F3RxbCAM5l5MA%2Fk%3D: dial tcp 108.160.163.106:443: connect: connection refused.
See 'docker run --help'.

 要更换镜像源,在/etc/docker/daemon.json中添加如下配置

{
    "registry-mirrors": [
        "https://do.nark.eu.org",
        "https://dc.j8.work",
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn"
    ]
}

然后systemctl restart docker重启后重新拉取测试

[root@master ~]# systemctl restart docker
Job for docker.service failed because start of the service was attempted too often. See "systemctl status docker.service" and "journalctl -xe" for details.
To force a start use "systemctl reset-failed docker.service" followed by "systemctl start docker.service" again.

出现这种情况可能是daemon.json里面有空格或者格式不对,然后修改为下面这样

{
    "exec-opts": ["native.cgroupdriver=systemd"],
    "registry-mirrors": [ "https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"]
}

 systemctl restart docker重启后重新拉取测试

此时docker安装完成

docker安装出现问题汇总

1) Failed to get D-Bus connection: Operation not permitted

更换systemctl

2)docker无法启动,一直启动失败

查看日志文件 /var/log/journal/docker.service.log会有如下报错

can't initialize iptables table `nat': Permission denied (you must be root)

此时可以修改/usr/lib/systemd/system/docker.service文件,对ExecStart=/usr/bin/dockerd 添加--iptables=false,也就是ExecStart=/usr/bin/dockerd --iptables=false

3)文件系统需要由overlay2更换为vfs

编辑/etc/docker/daemon.json。如果它还不存在,请创建后再编辑它。添加以下内容

{
  "storage-driver": "vfs"
}

4)controller: error obtaining controller instance: Enabling IP forwarding failed: open /proc/sys/net/ ipv4/ip_forward: read-only file

修改/proc/sys/net/ipv4/ip_forward内容为1,echo "1" > /proc/sys/net/ipv4/ip_forward

2.安装Kubernetes组件(所有节点)

# 更换镜像源
# 编辑/etc/yum.repos.d/kubernetes.repo,添加下面的配置
cat > /etc/yum.repos.d/kubernetes.repo << EOF 
[kubernetes]
name=Kubernetes Repo
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64   
gpgcheck=0
enabled=1
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpgp
       http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg 
EOF


# 查询kubeadm可用的版本
yum list kubeadm --showduplicates

# 安装kubeadm、kubelet、kubect
yum  install -y kubeadm-1.18.0 kubelet-1.18.0 kubectl-1.18.0


# 设置kubelet开机自启
systemctl enable kubelet

1.4.集群初始化

下面操作只需要在master节点执行

# 创建集群
# apiserver-advertise-address的ip地址是你master节点的ip地址
[root@master ~]#  kubeadm init --apiserver-advertise-address=192.168.226.140 --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

根据下面的提示分别在master和node上执行不同的操作 

在master节点执行

[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

在node节点执行

kubeadm join 192.168.226.128:6443 --token q64ha5.cuo0wdzca8sztzg9 \
    --discovery-token-ca-cert-hash sha256:d6b29a698a28cf1939ede7e4f7605635e05361a05bbea928e947147b512423a5

在master节点上查看节点信息

[root@master ~]# kubectl get nodes
NAME     STATUS     ROLES    AGE     VERSION
master   NotReady   master   18m     v1.17.4
node1    NotReady   <none>   4m2s    v1.17.4
node2    NotReady   <none>   3m57s   v1.17.4

1.5.安装网络插件,只在master节点操作即可

从初始化信息提示可以去官网查看配置cni网络Installing Addons | Kubernetes

进入官网可以看到有很多的解决方案,这里选择安装flannel

[root@master ~]# mkdir /opt/k8s -p
[root@master ~]# cd /opt/k8s/
[root@master k8s]# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

 修改kube-flannel.yml文件

# 删除镜像docker.io的前缀
sed -i 's#docker.io/##g' calico.yaml

然后手动拉取镜像文件

[root@master k8s]# grep image: kube-flannel.yml
        image: flannel/flannel-cni-plugin:v1.5.1-flannel1
        image: flannel/flannel:v0.25.5
        image: flannel/flannel:v0.25.5
[root@master k8s]# docker pull flannel/flannel-cni-plugin:v1.5.1-flannel1
v1.5.1-flannel1: Pulling from flannel/flannel-cni-plugin
3fb2a2b49db6: Pull complete
bd4df3c464ff: Pull complete
Digest: sha256:442c2f8e1f9d27145b4090d0e8819b72676d46ac95cc81e944a7b69f49db5151
Status: Downloaded newer image for flannel/flannel-cni-plugin:v1.5.1-flannel1
[root@master k8s]# docker pull flannel/flannel:v0.25.5
v0.25.5: Pulling from flannel/flannel
3fb2a2b49db6: Already exists
6b518edcd22b: Pull complete
b1e57e1b0d6e: Pull complete
b678a87bf163: Pull complete
de2b3914d857: Pull complete
d804e8345c6b: Pull complete
535c74dae788: Pull complete
37965b9184b4: Pull complete
4f4fb700ef54: Pull complete
b7757664f176: Pull complete
Digest: sha256:4f65cc179d15e8ee4d67a6a32ce89c02094120a46452a4e0341d26be9fd556c3
Status: Downloaded newer image for flannel/flannel:v0.25.5

最后配置网络

[root@master k8s]# kubectl apply -f kube-flannel.yml
namespace/kube-flannel created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds created
[root@master k8s]#

等一会然后通过下面查看pod和节点状态 

[root@master k8s]# kubectl get po -n kube-system
NAME                             READY   STATUS    RESTARTS   AGE
coredns-7ff77c879f-6cwq8         1/1     Running   0          13m
coredns-7ff77c879f-fvhqn         1/1     Running   0          13m
etcd-master                      1/1     Running   0          14m
kube-apiserver-master            1/1     Running   0          14m
kube-controller-manager-master   1/1     Running   0          14m
kube-proxy-8dxzv                 1/1     Running   0          13m
kube-proxy-8sbbh                 1/1     Running   0          13m
kube-proxy-tcvzp                 1/1     Running   0          13m
kube-scheduler-master            1/1     Running   0          14m
[root@master k8s]# kubectl get no
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   15m   v1.18.0
node1    Ready    <none>   14m   v1.18.0
node2    Ready    <none>   14m   v1.18.0

可以看到pod都是running状态并且节点都是ready状态,此时k8s集群配置完成。

本文参考:

Kubernetes - CentOS7搭建k8s_v1.18集群高可用(kubeadm/二进制包部署方式)实测配置验证手册_kubernetes部署验证-CSDN博客

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

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

相关文章

享界S9+问界M9,华为智选车的高端局

作者 |老缅 编辑 |德新 8月6日&#xff0c;鸿蒙智行在北京发布D级纯电旗舰轿车&#xff0c;也是北汽 - 华为智选车合作的第一款车型&#xff0c;享界S9。 享界S9搭载了包括华为乾崑ADS 3.0在内的多项首发技术&#xff0c;全系标配100kWh华为800V巨鲸电池。 而在价格上&#…

mysql⑥:约束

一&#xff0c;概念 例子&#xff1a; 外键约束 例子&#xff1a; 外键的删除和更新

从商业角度分析,充电桩还能赚钱吗?

一、投入与产出 1、投入 是建设成本&#xff0c;包括设备&#xff08;箱变、充电设备、电缆等&#xff09;、土建和配套&#xff08;雨棚、照明、监控等&#xff09;。二是运营成本&#xff0c;包括租金、人工、电损等。 2、产出 充电手续费以及增值服务&#xff08;停车费…

力扣高频SQL 50题(基础版)第三十八题之1484.按日期分组销售产品

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第三十八题1484.按日期分组销售产品题目说明实现过程准备数据实现方式结果截图总结 力扣高频SQL 50题&#xff08;基础版&#xff09;第三十八题 1484.按日期分组销售产品 题目说明 表 Activities&#xff1a; ---…

shell的条件测试

为了能够正确处理Shell程序运行过程中遇到的各种情况&#xff0c;Linux Shell提供了一组测试运算符。 通过这些运算符&#xff0c;Shell程序能够判断某种或者几个条件是否成立。 条件测试在各种流程控制语句&#xff0c;例如判断语句和循环语句中发挥了重要的作用&#xff0c;所…

算法训练.

一.扩散 题解&#xff1a; 计算点之间的距离&#xff0c;然后对图进行处理即可&#xff0c;这个数据规模较小&#xff0c;因此我使用了floyd,还有最小生成树和二份答案加并查集的写法&#xff1b; 代码&#xff1a; #include <iostream> #include <cstring> #in…

微信小程序流量主收益

小程序流量主已经开通三天了,目前收益1.42,,,,,,,,,,,,,,,不过确实点击量不怎么多 再附上我的流量主小程序 点击量如果上去的话,收益应该还是可观的,有想开流量主的任何问题都可以骚扰我,,对小程序有任何意见也欢迎反馈~ 一起进步,一起学习~

CentOS linux 安装openssl(openssl拒绝服务漏洞【CVE-2022-0778】解决)

一、安装 1.下载相关openssl包 下载地址&#xff1a; https://www.openssl.org/source/ 2.将下载好的压缩包放到 /app/server/nginx 路径下&#xff08;根据自己实际需求定义&#xff09; 3.切换至该路径 cd /app/server/nginx4.压缩包解压 压缩包解压 &#xff1a;tar -…

矩阵算法的介绍和实现

一. 介绍 首先我们要清楚矩阵是什么&#xff1a;矩阵是一个按照长方阵列排列的复数或实数集合 1> 定义 定义&#xff1a;mn矩阵为mn个数排成的m行n列的表格&#xff0c;当mn时&#xff0c;矩阵A称为n阶方阵或者n阶矩阵。零矩阵&#xff1a;矩阵所有元素都为0。同型矩阵&a…

Centos7.6配置阿里云镜像源

1、备份本地镜像源&#xff0c;将/etc/yum.repos.d/下所有文件备份到/etc/yum.repos.d/bak/下 2、下载阿里云镜像 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 3、清除yum缓存-yum clean all 4、验证镜像源仓库 yum repolist

Redis漏洞复现【vulhub靶场】

步骤一&#xff1a;打开靶场 进入目录:cd /vulhub-master/redis/4-unacc 启动:docker-compose up -d 检查:docker-compose ps 步骤二&#xff1a;打开kali在kali安装redis程序 #安装redis apt-get install redis #redis链接 redis-cli -h 192.168.4.176-p 6379#redis常见命令 (…

智慧合规与合同管理是未来企业竞争力的关键

在法律和市场规则日益完善的当代&#xff0c;企业合规是公司治理的核心。它像是一道紧箍咒&#xff0c;确保企业遵循法律法规&#xff0c;避开违规风险&#xff1b;同时也是一枚护身符&#xff0c;保护企业免受不必要的诉讼和罚款&#xff1b;更加是企业竞争力的体现&#xff0…

使用 Prometheus 和 Grafana 监控 FastAPI 服务

在现代应用开发中&#xff0c;监控和可视化服务的运行状态和性能指标对于保证系统稳定性至关重要。本文将介绍如何使用 Prometheus 和 Grafana 对 FastAPI 服务进行监控和可视化&#xff0c;并展示如何通过 prometheus_fastapi_instrumentator 将 FastAPI 应用与 Prometheus 集…

zabbix监控1

1、概念 自带图形化界面&#xff0c;通过网页就可以监控所有服务器的状态。 事件告警、邮件通知 web界面提供的分布式监控以及网络监控功能的开源的企业级的软件解决方案 zabbix可以提供各种类型的监控模版&#xff0c;保证服务器的正常运行&#xff0c;灵活的通知机制可以…

惠海 H7303 DCDC线性恒流IC PWM调光无电感低压差大电流 9V 12V 24V 30V球泡灯/转向灯方案

H7303是一种带PWM调光功能的线性降压恒流LED驱动器&#xff0c;仅需外接一个电阻就可以构成一个完整的LED恒流驱动电路,调节该外接电阻就可以调节输出电流&#xff0c;输出电流可调范围为16~2000mA。H7303内置过热保护功能&#xff0c;可有效保护芯片&#xff0c;避免因过热而造…

【经验分享】ShardingSphere+Springboot-04:自定义分片算法(COMPLEX/STANDARD)

文章目录 3.4 CLASS_BASED 自定义类分片算法3.4.1 复杂分片自定义算法&#xff08;strategyCOMPLEX &#xff09;3.4.2 STANDARD 标准分片自定义算法## 进阶:star: 自定义算法范围查询优化 3.4 CLASS_BASED 自定义类分片算法 3.4.1 复杂分片自定义算法&#xff08;strategyCOM…

Windows 10 /11 系统上安装Arc浏览器!超详细的教程

Arc浏览器在在发布以后&#xff0c;给人留下了相当不错的第一印象。 简洁的界面设计,巧妙的操作逻辑,使用过后让人爱不释手,体验出众&#xff01;目前官方提供了Windows 11 和 Mac版 官方下载&#xff1a;【链接直达】 如果你是Windows 10系统&#xff0c;由于官方没有直接提…

加固三防笔记本电脑:保护数据安全的首选设备

随着信息技术的飞速发展&#xff0c;笔记本电脑早已成为现代生活中不可或缺的工具。然而&#xff0c;普通的笔记本电脑无法适应一些特殊的环境&#xff0c;在数据安全保护方面也有着一定的风险。加固三防笔记本电脑则是保护数据安全的首选设备。下面将介绍加固三防笔记本电脑的…

掌控150+KOC账号!游戏厂商深掘ChinaJoy余温,热度再飙升!

4天36.7万人次&#xff0c;抖音话题总播放次数达到10.9亿&#xff01; ChinaJoy&#xff08;以下简称CJ&#xff09;官方给出了第21届CJ的参观总人次和线上流量数据&#xff0c;展现了其应有的“顶流”热度。 作为全球数字娱乐领域最具知名度与影响力的年度盛会&#xff0c;202…

springmvc框架 dispacherServelet容器组件调用

服务器启动时&#xff0c;tomcat创建并自动装配所有生成对象&#xff1a;spring容器放在服务器应用全局中&#xff0c;springmvc容器被放在dispacherServlet容器中。注解解析器在dispacherServlet创建时赋予它识别相关注解并作出相应操作的能力。 浏览器发送请求req&#xff0c…