使用kubeadm搭建kubernetes单机master,亲测无异常

使用kubeadm搭建kubernetes单机master,亲测无异常本专栏记录了楼主安装 k8smaster 的过程 耗时 2 周 原因是百度上的教程基本都不好用 楼主承诺本文章好用 建议收藏 1 准备工作 1 确认环境 swapoff a 关闭 swapsetenfor 临时关闭 selinux 每台机器的以下内容不能相同 sudocat sys class dmi id product uuid 每台机器的 uuid 不能相同 ifconfig a ip 不能相同 2 开放端口协议方向端口范围作用使用者

在这里插入图片描述
本专栏记录了楼主安装k8s master的过程,耗时2周,原因是百度上的教程基本都不好用。楼主承诺本文章好用,建议收藏。

1.准备工作

1.确认环境

swapoff -a //关闭swap setenforce 0 //临时关闭selinux 

每台机器的以下内容不能相同

sudo cat /sys/class/dmi/id/product_uuid //每台机器的uuid不能相同 ifconfig -a //ip不能相同 

2.开放端口

协议 方向 端口范围 作用 使用者
TCP 入站 6443 Kubernetes API 服务器 所有组件
TCP 入站 2379-2380 etcd 服务器客户端 API kube-apiserver, etcd
TCP 入站 10250 Kubelet API kubelet 自身、控制平面组件
TCP 入站 10251 kube-scheduler kube-scheduler 自身
TCP 入站 10252 kube-controller-manager kube-controller-manager 自身
TCP 入站 8080 kubelet kubelet自身
协议 方向 端口范围 作用 使用者
TCP 入站 10250 Kubelet API kubelet 自身、控制平面组件
TCP 入站 30000-32767 NodePort 服务† 所有组件

端口号一定要安排明白!!!!否者会出现类似dial tcp 10.96.0.1:443: connect: no route to host错误,如果测试环境一直弄不好,可以关闭防火墙。ps:及其不建议。

3.允许 iptables 检查桥接流量

cat < 
  

2.安装

1.安装kubeadm,kubectl,kubelet

添加镜像 cat < 
  

2.安装插件

yum -y install socat conntrack-tools 

3.修改docker组为systemd

需要提前安装好docker

sudo mkdir /etc/docker cat < 
  

4.k8s拉取需要镜像

可以通过kubeadm config images pull命令下载镜像,但是很大概率连接失效,所以使用阿里镜像命令!

如果使用v1.21.0版本,语句可以跟楼主相同,否则请根据以上命令需要的自行拉取。

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.21.1 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.1 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.21.1 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.21.1 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.4.1 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0 docker pull coredns/coredns:1.8.0 

在k8s安装时会默认在镜像中获取k8s.gcr.io前缀的镜像,所以将上文下载好的镜像更改名称。

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.1 k8s.gcr.io/kube-apiserver:v1.21.1 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.21.1 k8s.gcr.io/kube-proxy:v1.21.1 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.21.1 k8s.gcr.io/kube-controller-manager:v1.21.1 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.21.1 k8s.gcr.io/kube-scheduler:v1.21.1 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.4.1 k8s.gcr.io/pause:3.4.1 docker tag coredns/coredns:1.8.0 k8s.gcr.io/coredns/coredns:v1.8.0 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0 k8s.gcr.io/etcd:3.4.13-0 

5.安装启动

1.修改主机映射

vi /etc/hosts 

在这里插入图片描述

2.初始化服务

kubeadm init --apiserver-advertise-address=192.168.44.15 --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.21.1 |tee kubeadmin-init.log 

3.注意

要使非 root 用户可以运行 kubectl,请运行以下命令, 它们也是 kubeadm init 输出的一部分:

mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config 

或者,如果你是root 用户,则可以运行:

export KUBECONFIG=/etc/kubernetes/admin.conf 

如果想重新初始化,可以执行 kubeadm reset。

6.安装flannel

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 

7.验证

kubectl get nodes 

在这里插入图片描述
如果出现ready则代表安装完成,master节点已经注册到了k8s。

8.异常处理

如果出现NotReady,可以执行以下语句判断服务器状态。

kubectl get nodes -o yaml 

以下绿色部分没有问题,红色部分异常message:docker: network plugin is not ready: cni config uninitialized
在这里插入图片描述

如果出现以上问题 查看日志。

journalctl -f -u kubelet.service 

如果出现以下日志。

"Error validating CNI config list" configList="{\n \"name\": \"cbr0\",\n \"cniVersion\": \"0.3.1\",\n \"plugins\": [\n {\n \"type\": \"flannel\",\n \"delegate\": {\n \"hairpinMode\": true,\n \"isDefaultGateway\": true\n }\n },\n {\n \"type\": \"portmap\",\n \"capabilities\": {\n \"portMappings\": true\n }\n }\n ]\n}\n" err="[failed to find plugin \"flannel\" in path [/opt/cni/bin] failed to find plugin \"portmap\" in path [/opt/cni/bin]]" 

执行以下命令即可

cat < 
  
    /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 clean all yum install kubernetes-cni -y 
  
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223239.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午2:32
下一篇 2026年3月17日 下午2:33


相关推荐

  • datagrid()_propertygrid控件

    datagrid()_propertygrid控件鉴于在本版收到好多asp.net初学者因为不了解ItemDataBound事件的用法而提出问题,特写此实例教程,以飨众友。实例:现要把如下的数据集(在查询管理器的查出来的结果集)绑定到DataGrid:绑定结果为——然而现在要实现如下效果:一、第一列的产品名是一个链接,它要求链接目标为:prod.aspx?name={产品名称}&spec={产品规格}二、当产品单价>=1元时,将其单价显示为红

    2022年10月13日
    7
  • 网线:568A 568B线序

    网线:568A 568B线序1 网线水晶头为什么要分 568A 568B 这要从平行线交叉线说起 平行线 网线 2 头都做成 568B 标准 就叫平行线 用于双机不同级连接 比如交换机连电脑 交换机连路由器 交叉线 网线一头做成 568B 另一头做成 568A 就叫交叉线 用于双机同级连接 比如电脑连电脑 交换机连交换机 现在都是平行线做法 设备能够自己识别 2 568A 和 568B 的区别区别在线序上 568A 白绿 绿 白橙 蓝 白蓝 橙 白棕 棕 568B 白橙 橙 白绿 蓝 白蓝 绿 白棕 棕 3 为什么不是颜色一致就可以 很多

    2026年3月19日
    3
  • 狂神说Java全栈学习路线

    狂神说Java全栈学习路线很多同学学习Java苦于没有自己的完整学习步骤,在这里,秦老师给大家奉上一份完整的学习计划~干货满满,关注收藏转发呀!不胜感激!一、Java基础二、JavaWeb三、SSM框架四、Lin…

    2022年5月16日
    39
  • 怎么查看Grok的历史对话 Grok聊天记录查找与管理方法【步骤】

    怎么查看Grok的历史对话 Grok聊天记录查找与管理方法【步骤】

    2026年3月15日
    3
  • unity c#面试_spring面试题及答案

    unity c#面试_spring面试题及答案无论是不是C#或者Unity开发者,均可用以下题型锻炼,面试教育你懂的需要注意的是下面都只是个人乱答,想看标准答案的可滚动到最后下载1.请简述值类型与引用类型的区别我是想简述下为什么第一个问题总是这个,因为所有出题的面试官都不走心的,实际项目肯定是引用类型+值类型混用,难道你没写过?intcurrLevel=Game.Instance.LevelCount;值类型包括:数值类型,结构体,b…

    2022年8月29日
    7
  • 延迟方法_延时偏方亲测真实有效

    延迟方法_延时偏方亲测真实有效1.performSelector-(void)performSelector:(SEL)aSelectorwithObject:(id)anArgumentafterDelay:(NSTime

    2022年8月4日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号