首页 > 系统相关 >Centos7---k8s集群 20241013

Centos7---k8s集群 20241013

时间:2024-10-13 19:00:49浏览次数:8  
标签:--- Centos7 master docker k8s root bash flannel

目录

 

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

角色主机名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/hosts
    
    127.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

标签:---,Centos7,master,docker,k8s,root,bash,flannel
From: https://www.cnblogs.com/smallfa/p/18462747

相关文章

  • 视野修炼-技术周刊第105期 | AI驱动全栈应用开发
    欢迎来到第105期的【视野修炼-技术周刊】,下面是本期的精选内容简介......
  • 口胡-10/13
    CF1939F尝试:看到只有\(n-2\)条被删了,一共少了\(2n-4\)的度数,说明一定有\(n-1\)或\(n-2\)度的点。然鹅看了半天感觉没有用。再看询问,给了\(n\)次,那只能是吧\(1\)到\(n\)都询问一遍。于是问题变为:已知度数为\(i\)的点中编号最小的为\(p_i\),一个与其不相邻的点......
  • 2024-2025-1(20241321)《计算机基础与程序设计》第三周学习总结
    这个作业属于哪个课程<的链班级接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标<理解并学习数字分类与计数法等内容>作业正文...https://www.cnblogs.com/guchuang/p/18......
  • 【汇编语言】第三章----寄存器(内存访问)(一)—— 内存中字的存储
    文章目录前言1.内存中字的存储2.问题3.问题分析与解答4.结论结语前言......
  • Android 车载应用开发指南 - CAN Bus 协议详解
    ​在现代车载应用开发中,CAN(ControllerAreaNetwork)总线协议扮演着不可或缺的角色。作为一个汽车内部网络的标准协议,CANBus已经成为了车载系统通信的基础。而在Android车载应用开发的过程中,理解并利用好CANBus协议是必不可少的。那么,CANBus到底是什么?它又是如何在车载......
  • 网站连接数据库怎么写:如何使用mysql-connector-python连接到MySQL数据库
    importmysql.connectorfrommysql.connectorimportErrortry:#创建连接connection=mysql.connector.connect(host='localhost',#数据库服务器地址user='your_username',#数据库用户名password='your_passwor......
  • 2024-2025-1 20241314 《计算机基础与程序设计》第3周学习总结
    这个作业属于哪个课程<班级的链接>(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里2024-2025-1计算机基础与程序设计第三周作业这个作业的目标<巩固知识,拓展能力>作业正文https://www.cnblogs.com/serene99/p/18462624教材学习内容总结一门与电路在......
  • 高性能计算学习笔记-优化(2)
    一、Loop循环优化有以下几种循环合并:两个循环合并到一个循环中循环展开:循环内的并行技术循环交换:改变多维数组的空间访问顺序,改善空间局部性,提高cache命中率循环分布:将一个循环拆分为多个循环,使编译器可以进行向量化优化循环不变:循环中不发生变化的量提到循环外面,避免重......
  • 在启智AI平台实践ChatGLM4-9B聊天机器人@MindSpore
    前段时间在昇思训练营发现一个好东西,就是昇思AI实验室:昇思大模型平台在官方提供的jupyterAI编程实践样例中,发现了这个项目:ChatGLM4-9B实践样例GLM-4-9B是智谱AI推出的最新一代预训练模型GLM-4系列中的开源版本。在语义、数学、推理、代码和知识等多方面的数据集测评中,......
  • 设计模式-责任连
    packagecom.example.cor.chain;importcom.example.cor.filter.Filter;importjavax.servlet.Servlet;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjava.io.IOException;publicclas......