K8s:kubeadm部署k8s集群

kubeadm部署

1、环境

基础环境

containerd	###1、容器运行时
nerdctl		###2、客户端调用运行时工具
10.0.0.31 master
10.0.0.32 node
10.0.0.33 node

2、优化源、初始化安装环境、下载三个组件

1、优化源:切换成阿里云后update
		ipset  ipvsadm
		ipvsadm  -Ln   查看什么规则
2、查看: apt-cache  madison   kubeadm		(查看版本都有哪些)
3、安装(三台机器):  apt install kubeadm=1.26.3-00  kubelet=1.26.3-00   kubectl=1.26.3-00
apt-get update && apt-get install -y apt-transport-https -y
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update && apt-cache madison kubeadm

apt install kubeadm=1.26.3-00  kubelet=1.26.3-00   kubectl=1.26.3-00

2、提前下载kubernetes镜像

注意:(防止k8s初始化镜像失败)

kubeadm config images list --kubernetes-version v1.26.3

kubeadm config images pull --image-repository="registry.cn-hangzhou.aliyuncs.com/google_containers" --kubernetes-version=v1.26.3

3、内核参数优化

root@k8s-master1:~# vim  /etc/sysctl.conf
###################################################################
net.ipv4.ip_forward=1
vm.max_map_count=262144
kernel.pid_max=4194303
fs.file-max=1000000
net.ipv4.tcp_max_tw_buckets=6000
net.netfilter.nf_conntrack_max=2097152
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness=0


内核模块开机挂载:
root@k8s-master1:~#vim /etc/modules-load.d/modules.conf
###################################################################
ip_vs
ip_vs_lc
ip_vs_lblc
ip_vs_lblcr
ip_vs_rr
ip_vs_wrr
ip_vs_sh
ip_vs_dh
ip_vs_fo
ip_vs_nq
ip_vs_sed
ip_vs_ftp
ip_vs_sh
ip_tables
ip_set
ipt_set
ipt_rpfilter
ipt_REJECT
ipip
xt_set
br_netfilter
nf_conntrack
overlay

#重启后验证内核模块与内存参数:
###################################################################
root@k8s-master1:~# lsmod | grep br_netfilter
br_netfilter 32768 0
bridge 307200 1 br_netfilter
root@k8s-master1:~# sysctl -a | grep bridge-nf-call-iptables
net.bridge.bridge-nf-call-iptables = 1



内核优化资源限制
vim /etc/security/limits.conf

3、k8s集群初始化

kubeadm init --apiserver-advertise-address=10.0.0.31  --apiserver-bind-port=6443 --kubernetes-version=v1.26.3 --pod-network-cidr=10.100.0.0/16 --service-cidr=10.200.0.0/16 --service-dns-domain=cluster.local --image-repository="registry.cn-hangzhou.aliyuncs.com/google_containers" --ignore-preflight-errors=swap


--image-repository="registry.cn-hangzhou.aliyuncs.com/google_containers"		

注意事项:

防火墙
			selinux
			swap

初始化命令:
kubeadm init --apiserver-advertise-address=10.0.0.31  --apiserver-bind-port=6443 --kubernetes-version=v1.26.3 --pod-network-cidr=10.100.0.0/16 --service-cidr=10.200.0.0/16 --service-dns-domain=cluster.local --image-repository="registry.cn-hangzhou.aliyuncs.com/google_containers" --ignore-preflight-errors=swap

注意:pod的网络和service-cidr的网络一定是别的网段、不能和宿主机和其他环境一样
	 想要创建很多很多容器、网络必须16位、给足。

执行后操作

重点注意:

执行完之后提示:初始化完成、然后执行提示命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config


kubectl  get  node
kubectl  get  pod   -A

随后coredns属于pending状态: 原因是这个coredns不会装在master节点上面、会安装在node节点上面、这个会检查网络、如果CNI没有启动、是不会安装coredns的。

4、添加node节点

添加另外两个节点

1、必须有容器运行时
2、添加新节点、两个node:(可以看出、携带证书和证书的hash)
kubeadm join 10.0.0.31:6443 --token 7lgiqp.fujakgh6r0hhq3y9 \
	--discovery-token-ca-cert-hash sha256:564bb8a81758bdd674c2b03b8a1e70f537faff2996d727ca68210c5c40a7cddc 

5、安装网络组件calico

重点注意:calico需要读取认证文件做认证、写执行步骤 7

符合CNI标准的网络组件都能用:
1、修改成本地安装集群时候网络环境	10.100.0.0/16	
2、子网掩码大小:修改成24位(3百多地址使用)
3、指定与那块网卡建立连接、网卡名称(多块网卡一定要配置) ens.*(正则匹配网卡)或者eth0写死
4、里面会下载几个镜像、如果上不了网、写提前下载下来。
		镜像名:nerdctl  pull docker.io/calico/kube-controllers:v3.23.1 	
							 docker.io/calico/node:v3.23.1
							 docker.io/calico/cni:v3.23.1

		下载后把杰哥的calico的yaml文件拷贝到master机器()
开始创建: kubectl   apply  -f  calico.yaml
		执行之后会去下载镜像、是否启动就看你的网络是否下载的快了


查看详情:
kubectl  describe  pod -n kube-system   calico-kube-controllers-79bfdd4898-4pjp8 

		

注意:如果公有云部署、需要开放端口、通常建议、node节点不挂公网ip、要想访问k8s服务、通过SLB转发进来。

6、创建认证文件

其他网络组件不需要拷贝、calico需要拷贝
node执行
mkdir  /root/.kube/
master(10.0.0.201)执行
scp   /root/.kube/config    node节点(10.0.0.202、10.0.0.203):/root/.kube/

这样node节点就能访问了

7、修改ipvs

方法一:
查看配置信息
kubectl  get  cm -A 

编写一个configmap配置文件
kubectl  edit   cm  -n  kube-system  kube-proxy


1、在mode的一行添加ipvs、默认是空的
2、然后删除pod	
				kubectl delete   pod  -n   kube-system  kube-proxy
				
				
方法二:
创建时候就是ipvs:初始化k8s时候指定配置文件、通过init文件来实现
把初始化配置时候输出到一个默认的init.yaml文件


1、输出打印初始化文件
	kubeadm  config print init-defaults  > kubeadm-init.yaml
2、修改master当前服务器地址
   criSocket要修改、1.24之后版本默认是containerd(要求文件统一化放到一个目录)
   镜像仓库换成国内地址
   k8s版本
   pod和service的子网
   添加负载均衡器SLB(可选、集群使用)
   下图添加两项

   ubuntu2204  125行SystemdCgroup = true			修改成true

posted @ 2024-05-29 17:51  姬高波  阅读(31)  评论(0)    收藏  举报