当前位置: 首页 > news >正文

单master部署简要步骤

  1. 准备多台服务器,选定一台为master

例如设置ip为192.168.0.10,host: k8s.master,其他分别为

k8s.s11 192.168.0.11

k8s.s12 192.168.0.12

....

hostname可以使用命令配置

hostname k8s.master

ip解析可以在hosts文件中写入,如果有内部dns解析可以在内部dns上解析

关闭firewalld和selinux

  1. 安装docker、k8s

注意:尽量保持多台服务器安装的应用版本一致

我采用的版本为:

kubeadm

1.23.6

kubectl

1.23.6

kubelet

1.23.6

docker

23.0.1(k8s会提示没有验证过,可以使用Latest validated version: 20.10)

  1. 关闭交换分区(可选,提升性能)

暂时禁用

swapoff -a

长期关闭,可以在/etc/fastab文件中注释,重启服务器

  1. Linux内核参数设置

考虑到服务器配置可能他人修改或被系统默认调整,建议设置 /etc/sysctl.conf

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0

如果不设置可能导致 [ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1等网络错误。

bridge.bridge-nf-call-ip6tables/bridge.bridge-nf-call-iptables设置原因

不管是 iptables 还是 ipvs 模式,Kubernetes 中访问 service 都会进行 DNAT,将原本访问 ClusterIP:Port 的数据包 DNAT 成 service 的某个 Endpoint (PodIP:Port),然后内核将连接信息插入 conntrack 表以记录连接,目的端回包的时候内核从 conntrack 表匹配连接并SNAT,这样原路返回形成一个完整的连接链路.

net.ipv4.ip_forward:出于安全考虑,Linux系统默认是禁止数据包转发的。

k8s中的三层扁平网络涉及到流量在不同网络设备之间的传递,比如:flannel的实现中,流量会在cni网桥,flannel.1设备,本机网卡设备之间传递流量。如果关闭,则流量无法在多个物理网络设备间传递。

0:表示禁止进行IP转发;

1:表示IP转发功能已经打开。

net.ipv4.ip_nonlocal_bind:此参数表示是否允许服务绑定一个本机不存在的IP地址;

使用场景:有些服务需要依赖一个vip才能启动,但是此vip不在本机上,当vip飘移到本机上时才存在;但是服务又需要提前启动,例如haproxy,nginx等代理需要绑定vip时;

0:默认值,表示不允许服务绑定一个本机不存的地址

1:表示允许服务绑定一个本机不存在的地址

vm.swappiness值越大,表示越积极使用swap分区,越小表示越积极使用物理内存;设置为0会禁止使用swap.需要根据服务器运行的程序类型,来设置不同的参数值。例如,对于Oracle一般设置为10;对于MySQL一般设置为1,尽可能不用swap分区。

  1. 初始化主节点

安装依赖镜像

docker pull  coredns/coredns:1.8.4
docker tag coredns/coredns:1.8.4 registry.dev.com/coredns:v1.8.4
docker images

初始化

kubeadm init \--apiserver-advertise-address=192.168.0.10 \--image-repository registry.aliyuncs.com/google_containers \--service-cidr=10.96.0.0/12 \--pod-network-cidr=10.244.0.0/16

如果master需要开启swap,还需要修改 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf kubelet 的启动文件的配置 :在启动命令ExecStart末尾加上: --fail-swap-on=false

然后重新加载配置:

systemctl daemon-reload
systemctl start kubelet

初始成功后有提示加入语句:

Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.confYou should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/Then you can join any number of worker nodes by running the following on each as root:kubeadm join 192.168.0.10:6443 --token 42mf2r.n3jvn26r34byvv9b \--discovery-token-ca-cert-hash sha256:775a36110dd28b84c3ac074657efc55a899cff77a019a9e2475f1bd0f579b535

按照提示完成master设置

 mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
  1. 子节点加入

kubeadm join 192.168.0.10:6443 --token 42mf2r.n3jvn26r34byvv9b \--discovery-token-ca-cert-hash sha256:775a36110dd28b84c3ac074657efc55a899cff77a019a9e2475f1bd0f579b535

如果子节点没有关闭swap,可以添加 --ignore-preflight-errors=Swap

  1. 检查

在主节点上使用命令查询节点情况

 kubectl get nodes
NAME             STATUS     ROLES                  AGE   VERSION
k8s.master       NotReady   control-plane,master   94m   v1.23.6
k8s.s11          NotReady   <none>                 71m   v1.23.6

NotReady 说明master和node节点之间的通信还是有问题的,容器之间通信还没有准备好

http://www.lryc.cn/news/14915.html

相关文章:

  • 【算法基础】(一)基础算法 --- 前缀和与差分
  • c++提高篇——stack容器
  • HTTP安全与HTTPS协议
  • 【c++】类和对象4—c++对象模型和this指针
  • 嵌入式Qt 开发一个视频播放器
  • 阿里巴巴内网 Spring Cloud Alibaba 强势来袭,开创微服务的新时代
  • 边界检测方法总结
  • Softing dataFEED OPC Suite Extended新版本支持从XML文件中读取生产数据
  • 央行罚单!金融机构被罚原因揭秘
  • js中var、let、const详解
  • 【数据库】MySQL概念知识语法-基础篇(DCL),真的很详细,一篇文章你就会了
  • Blender骨骼动画快速教程
  • 【C++算法】dfs深度优先搜索(下) ——【全面深度剖析+经典例题展示】
  • HIVE 基础(三)
  • redis-cluster集群搭建
  • 【C语言】可变参数列表va_list
  • CentOS7.6 MySQL8安装
  • 安装Tomcat的步骤?
  • Redis之分布式锁
  • 2022年中国前10电商GMV总结
  • ES6新增扩展:字符串-数值-数组-函数-对象
  • python中import原理
  • 《Qt6开发及实例》6-4 显示SVG格式图片
  • OpenGL ES 绘制一张图片
  • Python 之 Pandas DataFrame 数据类型的行操作和常用属性和方法汇总
  • MacOS下载钉钉直播回放视频的Python最新解决方案
  • 2023年测试人跳槽新功略,涨薪10K+
  • RabbitMQ之Work Queues
  • CRM哪家好?这5个CRM管理系统很好用!
  • 国内ce认证机构有哪些 国内十大CE认证机构排名 做ce认证的公司推荐