k8s添加node节点和master节点

news2024/11/16 17:40:58

一.准备

1.基本概述

版本:
kubelet:v1.20.4
docker: 20.10.23
资源:
cpu:8
mem:16
kernel:3.10.0-1160.71.1.el7.x86_64
镜像仓库地址:
registry.cn-hangzhou.aliyuncs.com/google_containers/

2.安装前准备

2.1)关闭防火墙

~]# systemctl stop firewalld && systemctl disable firewalld && iptables -F

2.2)关闭selinux

 ~]# sed -i 's/enforcing/disabled/' /etc/selinux/config && setenforce 0

3)修改内核和加载所需要的内核

## 修改内核
~]# cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

# 开启路由转发
~]# vim /etc/sysctl.conf  
net.ipv4.ip_forward = 1
~]# sysctl --system

# 加载ip_vs内核模块均衡
~]# modprobe ip_vs
modprobe ip_vs_rr
modprobe ip_vs_wrr
modprobe ip_vs_sh
modprobe nf_conntrack_ipv4

# 设置下次开机自动加载
~]# cat > /etc/modules-load.d/ip_vs.conf << EOF 
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4
EOF

# 配置hosts方便辨识(可忽略)
~]# cat > /etc/hosts << EOF
172.17.0.62 master1
172.17.0.107 master2
172.17.0.110 master3
EOF

# 测试
~]# ping -w4 master1 && ping -w4 master2 && ping -w4 master3

2.3)准备yum源

# 准备docker的yum源
~]# yum install wget -y
~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

# 导入阿里云的源kubernetes的源 
~]# cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF

3.安装k8s

3.1)刷新缓存安装kubeadm、kubectl、kubelet、docker-ce

~]# yum clean all && yum repolist && yum makecache
~]# yum install -y kubeadm-1.20.4 kubelet-1.20.4 kubectl-1.20.4 docker-ce

3.2)设置systemd及指定网络仓库

~]# vim /etc/docker/daemon.json
{
    "exec-opts": ["native.cgroupdriver=systemd"],
    "registry-mirrors": ["https://hub-mirror.c.163.com"]
}

3.3)安装代理

支持内部负载均衡

~]# yum install -y ipvsadm ipset

3.4)启动docker服务和kubernetes设置开机自启

~]# systemctl daemon-reload && systemctl enable docker && systemctl start docker
~]# systemctl enable kubelet
# 注:不需要启动kublet,join加入集群后会自动启动,否则会报错

3.5)Tab键设置

~]# kubectl completion bash > /etc/bash_completion.d/kubectl
~]# kubeadm completion bash > /etc/bash_completion.d/kubeadm

3.6)下载镜像

# 先查看kubelete需要的镜像     
~]# kubeadm config images list

# 下载镜像,这里用国内镜像源(以1.20.4为例)   
~]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.20.15
~]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.20.15
~]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.20.15
~]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.20.15
~]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
~]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0
~]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.7.0

## 注:安装kubelet完成后,kubelet是不启动的,不能直接systemctl start kubelet,加入节点或初始化为master后即可启动成功

二.添加node(worknode工作节点

1.获取证书key

~]# kubeadm token create --print-join-command
kubeadm join 172.17.0.62:6443 --token i2lamg.s6c3n1h7bqo0txa2     --discovery-token-ca-cert-hash sha256:34535001c736a86e2a3dd6de79cbaafbbce5f23e42c2e9e7ac9562abef69ebab 

2.node加入k8s集群

~]# kubeadm join 172.17.0.62:6443 --token i2lamg.s6c3n1h7bqo0txa2   --discovery-token-ca-cert-hash sha256:34535001c736a86e2a3dd6de79cbaafbbce5f23e42c2e9e7ac9562abef69ebab 
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

3.在master查看

~]# kubectl get nodes 
vm-0-107-centos   Ready    <node>                 109m   v1.20.4
vm-0-62-centos    Ready    control-plane,master   8h     v1.20.4

三.添加master节点

1.添加master节点

~]# kubeadm init phase upload-certs --upload-certs
I0129 16:54:16.921885    8775 version.go:254] remote version is much newer: v1.26.1; falling back to: stable-1.20
[upload-certs] Storing the certificates in Secret "kubeadm-certs" in the "kube-system" Namespace
[upload-certs] Using certificate key:
6ac134a79072a83b107f5877b0b5ef43d5f45247c0d1e9a6c77db2e46b8789d3

~]# kubeadm token create --print-join-command
kubeadm join 172.17.0.62:6443 --token i2lamg.s6c3n1h7bqo0txa2     --discovery-token-ca-cert-hash sha256:34535001c736a86e2a3dd6de79cbaafbbce5f23e42c2e9e7ac9562abef69ebab 

# 不要使用 --experimental-control-plane,会报错,这个是老版的方法
# 要加上--control-plane --certificate-key ,不然就会添加为node节点而不是master
# join的时候节点上不要部署,如果部署了kubeadm reset后再join

## 老版的
~]# kubeadm join 172.17.0.62:6443 --token i2lamg.s6c3n1h7bqo0txa2     --discovery-token-ca-cert-hash sha256:34535001c736a86e2a3dd6de79cbaafbbce5f23e42c2e9e7ac9562abef69ebab \
--experimental-control-plane --certificate-key 6ac134a79072a83b107f5877b0b5ef43d5f45247c0d1e9a6c77db2e46b8789d3

## 新版
~]# kubeadm join 172.17.0.62:6443 --token i2lamg.s6c3n1h7bqo0txa2  --discovery-token-ca-cert-hash sha256:34535001c736a86e2a3dd6de79cbaafbbce5f23e42c2e9e7ac9562abef69ebab --control-plane --certificate-key 6ac134a79072a83b107f5877b0b5ef43d5f45247c0d1e9a6c77db2e46b8789d3

2.排错

## 注:第一次会失败可能需要修改
[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
error execution phase preflight:
One or more conditions for hosting a new control plane instance is not satisfied.

unable to add a new control plane instance a cluster that doesn't have a stable controlPlaneEndpoint address

Please ensure that:
* The cluster has a stable controlPlaneEndpoint address.
* The certificates that must be shared among control plane instances are provided.


To see the stack trace of this error execute with --v=5 or higher

### 解决办法如下
## 查看kubeadm-config.yaml
~]# kubectl -n kube-system get cm kubeadm-config -oyaml | grep controlPlaneEndpoint
# 发现没有controlPlaneEndpoint,添加controlPlaneEndpoint

# 大概在这么个位置:
~]# kubectl -n kube-system edit cm kubeadm-config
...
    kind: ClusterConfiguration
    kubernetesVersion: v1.18.0
    controlPlaneEndpoint: 172.17.0.62:6443    # 添加这一行

# 然后再在准备添加为master的节点上执行kubeadm join的命令

# 1.删除节点数据
~]# kubectl cordon 节点名
~]# kubectl drain 节点名 --delete-local-data --ignore-daemonsets --force
~]# kubectl delete node 节点名
~]# rm -rf .kube/                # 如果不删除则会报如下错

3.查看

~]# kubectl get pods -A
NAMESPACE     NAME                                      READY   STATUS    RESTARTS   AGE
kube-system   coredns-54d67798b7-mrdwg                  1/1     Running   0          8h
kube-system   coredns-54d67798b7-qwfns                  1/1     Running   0          8h
kube-system   etcd-vm-0-107-centos                      1/1     Running   0          128m
kube-system   etcd-vm-0-62-centos                       1/1     Running   0          8h
kube-system   kube-apiserver-vm-0-107-centos            1/1     Running   0          128m
kube-system   kube-apiserver-vm-0-62-centos             1/1     Running   0          8h
kube-system   kube-controller-manager-vm-0-107-centos   1/1     Running   0          128m
kube-system   kube-controller-manager-vm-0-62-centos    1/1     Running   2          8h
kube-system   kube-flannel-ds-cnrhr                     1/1     Running   1          128m
kube-system   kube-flannel-ds-nf2hv                     1/1     Running   0          8h
kube-system   kube-proxy-sh9n6                          1/1     Running   0          128m
kube-system   kube-proxy-wwblc                          1/1     Running   0          8h
kube-system   kube-scheduler-vm-0-107-centos            1/1     Running   0          128m
kube-system   kube-scheduler-vm-0-62-centos             1/1     Running   2          8h

~]# kubectl get nodes
NAME              STATUS   ROLES                  AGE    VERSION
vm-0-107-centos   Ready    control-plane,master   128m   v1.20.4
vm-0-62-centos    Ready    control-plane,master   8h     v1.20.4

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

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

相关文章

大部分人都容易焦虑,那么应该如何对待焦虑呢?

新年伊始&#xff0c;告别喜庆欢乐的春节&#xff0c;大家应该已经投入到正常的工作当中去了。面对节后的开工&#xff0c;难免都会有点焦虑&#xff0c;因为大多数人还沉浸在春节喜悦的回忆当中&#xff0c;回忆都是美好的&#xff0c;因为回忆中是带有感情的&#xff0c;美好…

总投资30亿、算力500P,宜昌先进计算产业可持续发展之路

近日&#xff0c;国家先进计算产业创新&#xff08;宜昌&#xff09;中心项目工程总承包和委托运营&#xff08;EPCO&#xff09;中标结果公示&#xff0c;由中科升哲数据科技有限公司联合重庆市设计院有限公司、中讯邮电咨询设计院有限公司、中国化学工程第十六建设有限公司组…

multipart/form-data 在低版本spring和webFlux中的解析

背景 最近在做一个技术项目的迁移&#xff0c;将老的springMVC项目迁移到SpringWebFlux项目中&#xff0c;在流量迁移过程中发现有一个业务方传过来的参数新项目拿不到&#xff0c;究其原因是老版本的spring解析器和新版本的解析器对multipart/form-data类型的contentType解析…

《深入浅出计算机组成原理》学习笔记 Day14

数据通路&#xff08;下&#xff09;1. PC 寄存器的实现2. 读写数据所需要的译码器3. 数据通路完整实现4. 总结参考1. PC 寄存器的实现 PC 寄存器又名程序计数器&#xff08;Program Counter&#xff09;。 PC 寄存器由两个部分组成&#xff1a; 时钟信号。提供定时的输入&a…

刚来的00后太卷了,上班还没2年,跳到我们公司起薪25k....

都说00后躺平了&#xff0c;但是有一说一&#xff0c;该卷的还是卷。 这不&#xff0c;前段时间我们公司来了个00后&#xff0c;工作都没两年&#xff0c;跳槽到我们公司起薪18K&#xff0c;都快接近我了。后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了…

Arthas 入门到实战(四)arhtas idea plugin集成插件

前言&#xff1a; Arthas 官方的工具还不够足够的简单&#xff0c;需要记住一些命令&#xff0c;但是我们需要的是一个能够简单处理字符串信息的插件即可使用。当在处理线上问题的时候需要最快速、最便捷的命令&#xff0c;因此插件还是有存在的意义和价值的。 一、idea插件安…

Blender 粒子系统

文章目录简介.添加粒子系统.属性.自发光&#xff08;发射&#xff09;.源.烘焙(仅发射体).速度(仅发射体).旋转(仅发射体&#xff0c;除非毛发系统开启了高级属性).物理(仅发射体).毛发动力学(仅毛发).渲染.路径.视图显示.子级.簇集.糙度.扭结.力场权重.顶点组.粒子编辑.渲染毛…

GraalVM和Spring Native尝鲜,一步步让Springboot启动飞起来,66ms完成启动

简介 GraalVM是高性能的JDK&#xff0c;支持Java/Python/JavaScript等语言。它可以让Java变成二进制文件来执行&#xff0c;让程序在任何地方运行更快。这或许是Java与Go的一场战争&#xff1f; 下载安装GraalVM 安装GraalVM 首先到官网下载&#xff0c;我是直接到GitHub Re…

7-2输入/输出系统-I/O方式

文章目录一.程序查询方式二.程序中断方式三.DMA方式1.传送过程2.DMA控制器&#xff08;DMAC&#xff09;的内部结构3.DMA传送方式&#xff08;1&#xff09;停止CPU访问主存&#xff08;2&#xff09;DMA与CPU交替访存&#xff08;3&#xff09;周期挪用/周期窃取4.DMA方式的特…

基于改进粒子群算法的混合储能系统容量优化(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

css特性(继承、层叠、优先级)

1、继承性 特性: 子元素有默认继承父元素样式的特点(子承父业) 可以继承的常见属性(文字控制属性都可以继承) colorfont-style、 font-weight、 font-size、 font-familytext-indent、text-align、line-height … 注意点: 控制字的都能继承 可以通过调试工具判断样式是否可以…

应用系统基于CAS实现单点登录的解决方案

单点登录 (SingleSign-On&#xff0c;SSO) &#xff0c;是一种帮助用户快捷访问网络中多个站点的安全通信技术。单点登录系统基于一种安全的通信协议&#xff0c;该协议通过多个系统之间的用户身份信息的交换来实现单点登录。使用单点登录系统时&#xff0c;用户只需要登录一次…

JAVA的PDF Viewer:Big Faceless PDF Viewer Crack

PDF Viewer是一个可以显示PDF文档的Swing组件。针对不需要完整 API 的客户&#xff0c;Viewer 可以作为 Applet、应用程序或通过 Java Web Start 安装&#xff0c;或嵌入到 Swing 应用程序中。 产品概览 打印、保存、文本搜索、表单、数字签名和注释是众多可用功能中的一部分 -…

IB 课程的挑战(二)

以下我想换个角度用自身的经历以及多年来教学的经验去分享修读 IB课程的挑战。 &#xff08;一&#xff09;必修文学科2022尽管我于会考中文获得「A」级成绩&#xff0c;但面对IB课程的中国文学 (IB Chinese A Literature)时&#xff0c;却仍感到十分吃力。我之前从未接触过中国…

网络IO模型

1 介绍一提到网络IO&#xff0c;甚至一些网络框架&#xff0c;就无法避免遇到阻塞、非阻塞、同步、异步的概念&#xff0c;要理解这些概念&#xff0c;先要清楚网络IO是什么&#xff0c;以及网络IO如何工作。网络IO本质上也是IO的一种&#xff0c;就是数据的输入输出&#xff0…

护网行动(防守方)linux服务器通用安全加固指南(1)

实验所属系列&#xff1a;Linux服务器搭建/Linux服务安全 Linux 是一个开放式系统&#xff0c;可以在网络上找到许多现成的程序和工具&#xff0c;这既方便了用户&#xff0c;也方便了黑客&#xff0c;因为他们也能很容易地找到程序和工具来潜入 Linux 系统&#xff0c;或者盗…

CnOpenData中国观鸟记录数据

一、数据简介 观鸟&#xff0c;是指在自然环境中利用望远镜等观测记录设备在不影响野生鸟类正常生活的前提下观察鸟类的一种科学性质的户外活动。 鸟类&#xff0c;是生物多样性中最具指示性的类群。由全国各地观鸟爱好者们共同记录的观鸟信息&#xff0c;能够展示中国各地区的…

cesium +vue3 +vite 实现点线面功能

第一步&#xff1a;搭建vue3项目 1、npm在相应文件夹下创建 npm create vitelatest2、选择项目名称 3、选择vue 4、选择是否使用typescript 或者JavaScript 5、记得在终端npm install一下就可以启动项目了 第二步&#xff1a;引入cesiumJS 1、npm引入 npm i cesium vite…

海康Visionmaster-VM2D,VM3D,VM深度学习对电脑配置要求

为确保VM算法平台能正常安装及运行&#xff0c;对PC配置有所要求。 第一&#xff1a;推荐配置&#xff1a; 操作系统&#xff1a;Windows7/10&#xff08;64位中文操作系统&#xff09; CPU&#xff1a;Intel Core i7-6700 3.4GHz 或以上&#xff08;如需使用CPU相关深度学习…

32岁面试字节软件测试岗,想不到居然这么简单......

前段时间有个在小公司干了七八年的朋友离职了&#xff0c;想要拼一拼大厂&#xff0c;于是他选择了字节跳动。面试总共花费了 20 天左右&#xff0c;包含了 4 轮电话面试、1 轮笔试、1 轮主管视频面试、1 轮hr视频面试。 据他了解到的信息&#xff0c;其实去字节面试的人很多&…