Centos7---k8s集群 20241013

news/2024/10/13 19:04:01
目录
  • 一、硬件准备(虚拟主机)
  • 二、环境准备
    • 1、所有机器关闭防火墙
    • 2、所有机器关闭selinux
    • 3、所有机器关闭swap
    • 4、所有机器上添加主机名与ip的对应关系
    • 5、在所有主机上将桥接的ipv4流量传递到iptables的链
  • 三、为所有节点安装docker
  • 四、集群部署
    • 1、为所有节点修改仓库,安装kubeadm、kubelet、kubectl
    • 2、修改docker的配置(所有节点)
    • 3、部署master节点(主节点k8s-master)
      • (1)、遇到报错:
      • (2)、解决办法:
    • 4、按照指示执行:
    • 5、查看kubelet.service状态
    • 6、查看节点状态为notready
    • 7、安装网络插件,官方文档:https://github.com/flannel-io/flannel
    • 8、添加node节点

 

一、硬件准备(虚拟主机)

角色主机名ip地址
master k8s-master 192.168.112.10
node k8s-node1 192.168.112.20
node k8s-node2 192.168.112.30

CentOS Linux release 7.9.2009 (Core)

至少2核CPU、3GB以上内存

使用命令hostnamectl set-hostname临时修改主机名

二、环境准备

1、所有机器关闭防火墙

  • bash
    systemctl stop firewalld	#关闭
    systemctl disable firewalld		#开机不自启
    systemctl status firewalld		#查看状态

2、所有机器关闭selinux

  • bash
    sed -i 's/enforcing/disabled/' /etc/selinux/config 
    setenforce 0

3、所有机器关闭swap

  • bash
    swapoff -a # 临时关闭
    sed -ri 's/.*swap.*/#&/' /etc/fstab  #永久关闭

4、所有机器上添加主机名与ip的对应关系

  • bash
    vim /etc/hosts127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.112.10 k8s-master
    192.168.112.20 k8s-node1
    192.168.112.30 k8s-node2

5、在所有主机上将桥接的ipv4流量传递到iptables的链

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

三、为所有节点安装docker

bash
yum install wget.x86_64 -y
rm -rf /etc/yum.repos.d/*
wget -O /etc/yum.repos.d/centos7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce-20.10.11 -y
systemctl start docker
systemctl enable docker

四、集群部署

1、为所有节点修改仓库,安装kubeadm、kubelet、kubectl

bash
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install kubelet-1.22.2 kubeadm-1.22.2 kubectl-1.22.2 -y
systemctl enable kubelet && systemctl start kubelet

2、修改docker的配置(所有节点)

bash
[root@k8s-master ~]# cat > /etc/docker/daemon.json <<EOF
> {
>   "exec-opts": ["native.cgroupdriver=systemd"]
> }
> EOF
[root@k8s-master ~]# systemctl daemon-reload
[root@k8s-master ~]# systemctl restart docker.service
[root@k8s-master ~]# systemctl restart kubelet.service
[root@k8s-master ~]# systemctl status kubelet.service

这里从节点的kubelet.service状态报code=exited, status=1/FAILURE是正常的

3、部署master节点(主节点k8s-master)

bash
kubeadm init \
--apiserver-advertise-address=192.168.112.10 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.22.2 \
--control-plane-endpoint k8s-master \
--service-cidr=172.16.0.0/16 \
--pod-network-cidr=10.244.0.0/16

记得保存好这段命令是用于将一个工作节点(worker node)加入到已存在的 Kubernetes 集群中的过程。

(1)、遇到报错:

bash
Here is one example how you may list all Kubernetes containers running in docker:- 'docker ps -a | grep kube | grep -v pause'Once you have found the failing container, you can inspect its logs with:- 'docker logs CONTAINERID'error execution phase wait-control-plane: couldn't initialize a Kubernetes cluster
To see the stack trace of this error execute with --v=5 or higher

(2)、解决办法:

bash
rm -rf /etc/containerd/config.toml
systemctl restart containerd

4、按照指示执行:

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

5、查看kubelet.service状态

bash
systemctl status kubelet.service

6、查看节点状态为notready

bash
[root@k8s-master ~]# kubectl get nodes
NAME         STATUS     ROLES    AGE   VERSION
k8s-master   NotReady   <none>   67s   v1.22.2

7、安装网络插件,官方文档:https://github.com/flannel-io/flannel

bash
# 最好手动提前拉取所需镜像
[root@k8s-master ~]# docker pull quay.io/coreos/flannel:v0.14.0
docker pull quay.io/flannel/flannel-cni-plugin:v1.2.0
[root@k8s-master ~]# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml [root@k8s-master ~]# kubectl apply -f kube-flannel.yml
                                           kubectl delete -f kube-flannel.yml
 
 
  kubectl get pods --all-namespaces
  kubectl get pods -n kube-system
 kube-flannel-ds Init:ImagePullBackOff         
                 flannel/flannel-cni-plugin对应image无法访问

 解决方法

vi kube-flannel.yml
image替换为

quay.io/coreos/flannel:v0.14.0
quay.io/flannel/flannel-cni-plugin:v1.2.0
点击查看大图
点击查看大图
 





8、添加node节点

bash
# 为node拉取网络插件镜像
[root@k8s-node1 ~]# docker pull quay.io/coreos/flannel:v0.14.0
[root@k8s-node2 ~]# docker pull quay.io/coreos/flannel:v0.14.0
[root@k8s-node1 ~]# kubeadm join k8s-master:6443 --token byfq2h.myv4dj0yqmmjz6qx \
>         --discovery-token-ca-cert-hash sha256:f6b364e22cd4e61897a9a58583ae072c5a3724ac14f44319b5f72021614eaadf
[root@k8s-node2 ~]# kubeadm join k8s-master:6443 --token byfq2h.myv4dj0yqmmjz6qx \
>         --discovery-token-ca-cert-hash sha256:f6b364e22cd4e61897a9a58583ae072c5a3724ac14f44319b5f72021614eaadf

至此一个简单的k8s集群安装完成

 

 

转https://www.cnblogs.com/misakivv/p/18073708

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

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

相关文章

rsa基本攻击手法总结大全(还在更新中)

一些关于分解n的常用手法: 1.最简单的就是直接使用yafu分解 2.费马分解然后我们令p=a+b,q=a-b,此时n=\(a^{2}-b^{2}\),那么\(b^2=a^2-n\),那么\(b=\sqrt{a^2-n}\),我们就让a=\(\sqrt{n}\)开始然后慢慢加1开始遍历,直到找到能够使得\(a^2-n\)能够为一个平方数即可得到我们的b…

2024-2025-1(20241321)《计算机基础与程序设计》第三周学习总结

这个作业属于哪个课程 <的链班级接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标 <理解并学习数字分类与计数法等内容>作业正文 ...https://www.cnblogs.com/gu…

php网站数据库连接

在PHP开发中,连接数据库是常见的操作之一。以下是连接MySQL数据库的基本步骤和示例代码: 1. 准备数据库信息主机名 (hostname): 数据库服务器的地址或域名。 用户名 (username): 连接数据库的用户名。 密码 (password): 对应用户的密码。 数据库名 (database name): 要连接的…

宝塔面板账号密码错误怎么重置

如果你忘记了宝塔面板的账号密码,可以通过以下几种方法进行重置:使用宝塔面板的重置功能:在登录页面,通常会有“忘记密码”或“重置密码”的链接。点击该链接并按照提示操作,一般会要求你输入注册时使用的邮箱或手机号进行验证,并发送重置链接。通过SSH重置密码:通过SSH…

网站联系人更改操作

要执行“网站联系人更改”操作,通常涉及以下几个步骤:登录后台管理系统:访问网站的管理后台。 输入管理员用户名和密码进行登录。定位到联系人信息页面:在后台菜单中找到“设置”或“配置”相关的选项。 选择“联系信息”或类似名称的子菜单。编辑联系人信息:在联系人信息…

怎么更改网页上的字

要更改网页上的文字,可以根据具体情况选择不同的方法。这里我提供几种常见的方法:浏览器开发者工具右键点击页面上的文字,然后选择“检查”或“Inspect Element”,这会打开浏览器的开发者工具。 在开发者工具中找到对应的文字元素,然后直接在HTML源代码中修改文本内容。Ja…

公司网页显示不全?网页显示乱码怎么办

公司网页显示不全或出现乱码通常是由以下几种原因造成的:编码设置问题:网页的内容编码与浏览器解析编码不一致会导致乱码。 资源加载失败:如CSS、JavaScript文件未能正确加载,可能导致页面样式或功能缺失。 服务器配置错误:服务器端的配置问题也可能影响到页面的正常显示。…

制作一个网站大概需要多少钱

制作一个网站的成本取决于多种因素,包括但不限于网站类型、功能需求、设计复杂度以及是否需要定制开发等。以下是一些大致的价格范围供参考:模板网站:价格范围:几百元到几千元。 特点:基于现有模板快速搭建,适合预算有限且对设计和功能没有特别要求的情况。定制网站:价格…