首页 > 其他分享 >2024年9月11日(k8s环境配置)

2024年9月11日(k8s环境配置)

时间:2024-09-12 18:24:10浏览次数:15  
标签:11 k8s ip 2024 master net kube root

编号主机名称ip
1k8s-master192.168.8.202
2k8s-node1192.168.8.203
3k8s-node2192.168.8.204

 

1、做免密

[root@k8s-master ~]# ssh-keygen
[root@k8s-master ~]# ssh-copy-id [email protected]

[root@k8s-master ~]# ssh-copy-id [email protected]

2、yum源(三台主机上传docker-ce.repo kubernetes.repo)

3、清理以及创建缓存(三台主机)

[root@k8s-master ~]# yum clean all && yum makecache

4、主机映射

三台主机都做主机映射

vim /etc/hosts

192.168.8.202 k8s-master
192.168.8.203 k8s-node1
192.168.8.204 k8s-node2

5、安装必备工具

三台主机都安装

yum install wget jq psmisc vim net-tools telnet yum-utils device-mapper-persistent-data lvm2 git tree -y

6、关闭防火墙 networkmanger selinux swap虚拟分区

三台主机都要关闭

[root@k8s-master ~]# systemctl disable --now firewalld
[root@k8s-master ~]# systemctl disable --now NetworkManager
[root@k8s-master ~]# swapoff -a && sysctl -w vm.swappiness=0
[root@k8s-master ~]# sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab

 7、同步时间

三台主机都要时间同步

[root@k8s-master ~]# yum -y install ntpdate
[root@k8s-master ~]# ntpdate time2.aliyun.com
[root@k8s-master ~]# crontab -e

*/5 * * * * /usr/sbin/ntpdate time2.aliyun.com
8、配置limit

三台主机都执行

[root@k8s-master ~]# ulimit -SHn 65535

[root@k8s-node1 ~]# vim /etc/security/limits.conf 

* soft nofile 65536
* hard nofile 131072
* soft nproc 65535
* hard nproc 655350
* soft memlock unlimited
* hard memlock unlimited
9、下载yaml文件,从gitee上下载,配置pod(一个集群和多个集群组成的小单位)的yaml文件和docker-compose.yaml文件相似,等k8s架构搭建起来之后,在添加功能性pod的时候使用

[root@k8s-master ~]# cd /root/ ; git clone https://gitee.com/dukuan/k8s-ha-install.git

[root@k8s-master ~]# ls

10、配置ipvs模块

三台主机都要装

yum install ipvsadm ipset sysstat conntrack libseccomp -y

modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack

vim /etc/modules-load.d/ipvs.conf

# 在系统启动时加载下列 IPVS 和相关功能所需的模块
ip_vs                                   # 负载均衡模块
ip_vs_lc                        # 用于实现基于连接数量的负载均衡>算法
ip_vs_wlc                       # 用于实现带权重的最少连接算法的>模块
ip_vs_rr                        # 负载均衡rr算法模块
ip_vs_wrr                       # 负载均衡wrr算法模块
ip_vs_lblc              # 负载均衡算法,它结合了最少连接(LC)算>法和基于偏置的轮询(Round Robin with Bias)算法
ip_vs_lblcr             # 用于实现基于链路层拥塞状况的最少连接负>载调度算法的模块
ip_vs_dh                        # 用于实现基于散列(Hashing)的负
载均衡算法的模块
ip_vs_sh                        # 用于源端负载均衡的模块
ip_vs_fo                        # 用于实现基于本地服务的负载均衡>算法的模块
ip_vs_nq                        # 用于实现NQ算法的模块
ip_vs_sed                       # 用于实现随机早期检测(Random Early Detection)算法的模块
ip_vs_ftp                       # 用于实现FTP服务的负载均衡模块
ip_vs_sh
nf_conntrack    # 用于跟踪网络连接的状态的模块
ip_tables                       # 用于管理防护墙的机制
ip_set                          # 用于创建和管理IP集合的模块
xt_set                          # 用于处理IP数据包集合的模块,提>供了与iptables等网络工具的接口
ipt_set                         # 用于处理iptables规则集合的模块
ipt_rpfilter    # 用于实现路由反向路径过滤的模块
ipt_REJECT              # iptables模块之一,用于将不符合规则的数>据包拒绝,并返回特定的错误码
ipip                                    # 用于实现IP隧道功能的模>块,使得数据可以在两个网络之间进行传输

lsmod | grep -e ip_vs -e nf_conntrack

11、配置k8s内核

三台主机都配置

vim /etc/sysctl.d/k8s.conf

# 写入k8s所需内核模块
 net.bridge.bridge-nf-call-iptables = 1         # 控制网络桥接与iptables之间的网络转发行为
 net.bridge.bridge-nf-call-ip6tables = 1                # 用于控>制网络桥接(bridge)的IP6tables过滤规则。当该参数设置为1时,表示>启用对网络桥接的IP6tables过滤规则
 fs.may_detach_mounts = 1               # 用于控制文件系统是否允>许分离挂载,1表示允许
 net.ipv4.conf.all.route_localnet = 1           # 允许本地网络上>的路由。设置为1表示允许,设置为0表示禁止。
 vm.overcommit_memory=1         # 控制内存分配策略。设置为1表示允
许内存过量分配,设置为0表示不允许。
 vm.panic_on_oom=0              # 决定当系统遇到内存不足(OOM)时
是否产生panic。设置为0表示不产生panic,设置为1表示产生panic。
 fs.inotify.max_user_watches=89100              # inotify可以监视
的文件和目录的最大数量。
 fs.file-max=52706963           # 系统级别的文件描述符的最大数量>。
 fs.nr_open=52706963                    # 单个进程可以打开的文件>描述符的最大数量。
 net.netfilter.nf_conntrack_max=2310720         # 网络连接跟踪表>的最大大小。
 net.ipv4.tcp_keepalive_time = 600              # TCP保活机制发送
探测包的间隔时间(秒)。
 net.ipv4.tcp_keepalive_probes = 3              # TCP保活机制发送
探测包的最大次数。
 net.ipv4.tcp_keepalive_intvl =15               # TCP保活机制在发
送下一个探测包之前等待响应的时间(秒)。
 net.ipv4.tcp_max_tw_buckets = 36000    # TCP TIME_WAIT状态的bucket数量。
 net.ipv4.tcp_tw_reuse = 1              # 允许重用TIME_WAIT套接字
。设置为1表示允许,设置为0表示不允许。
 net.ipv4.tcp_max_orphans = 327680              # 系统中最大的孤>套接字数量。
 net.ipv4.tcp_orphan_retries = 3                        # 系统尝>试重新分配孤套接字的次数。
 net.ipv4.tcp_syncookies = 1            # 用于防止SYN洪水攻击。设
置为1表示启用SYN cookies,设置为0表示禁用。
 net.ipv4.tcp_max_syn_backlog = 16384           # SYN连接请求队列
的最大长度。
 net.ipv4.ip_conntrack_max = 65536              # IP连接跟踪表的>最大大小。
 net.ipv4.tcp_max_syn_backlog = 16384           # 系统中最大的监>听队列的长度。
 net.ipv4.tcp_timestamps = 0            # 用于关闭TCP时间戳选项。
 net.core.somaxconn = 16384             # 用于设置系统中最大的监>听队列的长度

reboot重启

12、卸载podman 安装docker-ce docker-ce-cli containerd

三台主机都操作

yum remove -y podman runc containerd

yum install docker-ce docker-ce-cli containerd.io -y

13、配置containerd

三台主机都操作

[root@k8s-master ~]# cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
> overlay
> br_netfilter
> EOF
overlay
br_netfilter
[root@k8s-master ~]# modprobe overlay
[root@k8s-master ~]# modprobe br_netfilter

配置contained需要的内核模块,overlay br_netfilter

三台机器都要

[root@k8s-node2 ~]# cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
> net.bridge.bridge-nf-call-iptables  = 1
> net.ipv4.ip_forward                 = 1
> net.bridge.bridge-nf-call-ip6tables = 1
> EOF

14、Containerd 配置⽂件

三台主机都需要

mkdir -p /etc/containerd

containerd config default | tee /etc/containerd/config.toml

vim /etc/containerd/config.toml

63   sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9"
127         SystemdCgroup = true

systemctl enable --now containerd.service

 systemctl status containerd  #都要是启动状态

15、配置crictl客户端连接的运行位置

三台主机都需要配置

[root@k8s-master ~]# cat > /etc/crictl.yaml <<EOF
> runtime-endpoint: unix:///run/containerd/containerd.sock
> image-endpoint: unix:///run/containerd/containerd.sock
> timeout: 10
> debug: false
> EOF

16、安装kubernetes组件

三台主机

yum -y install kubeadm-1.28* kubectl-1.28* kubelet-1.28*

systemctl daemon-reload

systemctl enable --now kubelet

如果kubelet无法正常启动,检查swap是否已经取消虚拟分区,查看日志/var/logg/massagesr如果没有/var/lib/kubelet/config.yaml文件,可能需要重新安装

yum -y remove kubelet-1.28*

yum -y install kubelet-1.28*
systemctl daemon-reload

systemctl enable --now kubelet

systemctl status kubelet

yum -y install kubeadm-1.28*

kubelet端口是10248 10250 10255三个端口

17、Kubeadm 配置⽂件
        1.拉取镜像

[root@k8s-master ~]# vim kubeadm-config.yaml 

apiVersion: kubeadm.k8s.io/v1beta3              # 指定Kubernetes>配置文件的版本,使用的是kubeadm API的v1beta3版本
bootstrapTokens:                # 定义bootstrap tokens的信息。这>些tokens用于在Kubernetes集群初始化过程中进行身份验证
- groups:               # 定义了与此token关联的组
  - system:bootstrappers:kubeadm:default-node-token
  token: 7t2weq.bjbawausm0jaxury                # bootstrap token的值
  ttl: 24h0m0s          # token的生存时间,这里设置为24小时
  usages:                       # 定义token的用途
  - signing             # 数字签名
  - authentication              # 身份验证
kind: InitConfiguration         # 指定配置对象的类型,InitConfiguration:表示这是一个初始化配置
localAPIEndpoint:               # 定义本地API端点的地址和端口
  advertiseAddress: 192.168.8.202
  bindPort: 6443
nodeRegistration:               # 定义节点注册时的配置
  criSocket: unix:///var/run/containerd/containerd.sock         # 容器运行时(CRI)的套接字路径
  name: k8s-master              # 节点的名称
  taints:               # 标记
  - effect: NoSchedule          # 免调度节点
    key: node-role.kubernetes.io/control-plane          # 该节点>为控制节点
---
apiServer:              # 定义了API服务器的配置
  certSANs:             # 为API服务器指定了附加的证书主体名称(SAN),指定IP即可
  - 192.168.8.202
  timeoutForControlPlane: 4m0s          # 控制平面的超时时间,这>里设置为4分钟
apiVersion: kubeadm.k8s.io/v1beta3              # 指定API Server>版本
certificatesDir: /etc/kubernetes/pki    # 指定了证书的存储目录
clusterName: kubernetes         # 定义了集群的名称为"kubernetes"
controlPlaneEndpoint: 192.168.8.202:6443                # 定义了>控制节点的地址和端口
controllerManager: {}           # 控制器管理器的配置,为空表示使>用默认配置
etcd:           # 定义了etcd的配置
  local:                # 本地etcd实例
    dataDir: /var/lib/etcd              # 数据目录
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers            # 指定了Kubernetes使用的镜像仓库的地址,阿里云的镜
像仓库。
kind: ClusterConfiguration              # 指定了配置对象的类型,ClusterConfiguration:表示这是一个集群配置
kubernetesVersion: v1.28.2              # 指定了kubernetes的版本
networking:             # 定义了kubernetes集群网络设置
  dnsDomain: cluster.local              # 定义了集群的DNS域为:cluster.local
  podSubnet: 172.16.0.0/16              # 定义了Pod的子网
  serviceSubnet: 10.96.0.0/16   # 定义了服务的子网
scheduler: {}           # 使用默认的调度器行为

[root@k8s-master ~]# kubeadm config migrate --old-config kubeadm-config.yaml --new-config new.yaml

[root@k8s-master ~]# kubeadm config images pull --config new.yaml

         2.集群初始化

[root@k8s-master ~]# systemctl stop kubelet
[root@k8s-master ~]# kubeadm init --config /root/new.yaml  --upload-certs

如果报错

执行

[root@k8s-master ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

然后再初始化
[root@k8s-master ~]# vim token

kubeadm join 192.168.8.202:6443 --token 7t2weq.bjbawausm0jaxury \
	--discovery-token-ca-cert-hash sha256:582e73858f215e7dcf35fb99c0e5262e86668e866a50b2a725df4f673060d3e1 
18、加入子节点两个node都需要

[root@k8s-node1 ~]# systemctl stop kubelet

[root@k8s-node1 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@k8s-node1 ~]# kubeadm join 192.168.8.202:6443 --token 7t2weq.bjbawausm0jaxury --discovery-token-ca-cert-hash sha256:582e73858f215e7dcf35fb99c0e5262e86668e866a50b2a725df4f673060d3e1

[root@k8s-node2 ~]# systemctl stop kubelet

[root@k8s-node2 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@k8s-node2 ~]# kubeadm join 192.168.8.202:6443 --token 7t2weq.bjbawausm0jaxury --discovery-token-ca-cert-hash sha256:582e73858f215e7dcf35fb99c0e5262e86668e866a50b2a725df4f673060d3e1

主上面修改并查看集群 

[root@k8s-master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf
[root@k8s-master ~]# kubectl get nodes #查看节点 查看再集群中的主机的状态

NAME         STATUS     ROLES           AGE     VERSION
k8s-master   NotReady   control-plane   36m     v1.28.2
k8s-node1    NotReady   <none>          2m48s   v1.28.2
k8s-node2    NotReady   <none>          2m23s   v1.28.2

[root@k8s-master ~]# vim .bashrc

export KUBECONFIG=/etc/kubernetes/admin.conf 

[root@k8s-master ~]# kubectl get po -A   #查看所有的pod的状态

NAMESPACE     NAME                                 READY   STATUS    RESTARTS   AGE
kube-system   coredns-6554b8b87f-m7ml8             0/1     Pending   0          41m
kube-system   coredns-6554b8b87f-rmb5q             0/1     Pending   0          41m
kube-system   etcd-k8s-master                      1/1     Running   0          42m
kube-system   kube-apiserver-k8s-master            1/1     Running   0          42m
kube-system   kube-controller-manager-k8s-master   1/1     Running   0          42m
kube-system   kube-proxy-phlcm                     1/1     Running   0          7m42s
kube-system   kube-proxy-qjxpz                     1/1     Running   0          8m7s
kube-system   kube-proxy-r5rd8                     1/1     Running   0          41m
kube-system   kube-scheduler-k8s-master            1/1     Running   0          42m

[root@k8s-master ~]# kubectl get po -Aowide  #查看pod的完整信息
 

NAMESPACE     NAME                                 READY   STATUS    RESTARTS   AGE     IP              NODE         NOMINATED NODE   READINESS GATES
kube-system   coredns-6554b8b87f-m7ml8             0/1     Pending   0          43m     <none>          <none>       <none>           <none>
kube-system   coredns-6554b8b87f-rmb5q             0/1     Pending   0          43m     <none>          <none>       <none>           <none>
kube-system   etcd-k8s-master                      1/1     Running   0          43m     192.168.8.202   k8s-master   <none>           <none>
kube-system   kube-apiserver-k8s-master            1/1     Running   0          43m     192.168.8.202   k8s-master   <none>           <none>
kube-system   kube-controller-manager-k8s-master   1/1     Running   0          43m     192.168.8.202   k8s-master   <none>           <none>
kube-system   kube-proxy-phlcm                     1/1     Running   0          9m20s   192.168.8.204   k8s-node2    <none>           <none>
kube-system   kube-proxy-qjxpz                     1/1     Running   0          9m45s   192.168.8.203   k8s-node1    <none>           <none>
kube-system   kube-proxy-r5rd8                     1/1     Running   0          43m     192.168.8.202   k8s-master   <none>          <none>
kube-system   kube-scheduler-k8s-master            1/1     Running   0          43m     192.168.8.202   k8s-master   <none>           <none>
状态名称中文说明
pending挂起当前pod没有工作
running运行中当前pod正常工作
conttainerCreating正在创建中正在创建容器
 19、部署calico的pod
1. 找到配置的calico.yaml文件

[root@k8s-master ~]# cd k8s-ha-install/
[root@k8s-master k8s-ha-install]# git checkout manual-installation-v1.28.x && cd calico/
[root@k8s-master calico]# vim /etc/kubernetes/manifests/kube-controller-manager.yaml

19    - --cluster-cidr=172.16.0.0/16
2. 修改配置文件,将文件中的POD_CIDR替换成172.16.0.0/16

[root@k8s-master calico]# vim calico.yaml 

4801              value: "172.16.0.0/16"

[root@k8s-master calico]# kubectl apply -f calico.yaml


[root@k8s-master calico]# kubectl logs calico-node-blmpr -n kube-system

 

标签:11,k8s,ip,2024,master,net,kube,root
From: https://blog.csdn.net/weixin_70751333/article/details/142127098

相关文章

  • 2024年9月12日(k8s环境及测试 常用命令)
    一、环境准备及测试1、报错处理:kube-systemcalico-node-5wvln0/1Init:0/3016hkube-systemcalico-node-d7xfb0/1Init:0/3016hkube-system......
  • solidworks案例3-20240910
    使用到的命令:扫描,薄壁特征,等距实体......
  • P11030 『DABOI Round 1』Blessings Repeated题解
    P11030『DABOIRound1』BlessingsRepeated题解【形式化题意】给定一个正整数\(k\)和两个字符串\(S,T\)。设字符串\(s\)为\(k\)个字符串\(S\)首尾相接得到的字符串,\(n=\verts\vert,m=\vertT\vert\)。设答案集合\(P=\{(i_0,i_1,\dots,i_{m-1})\mid0\lei......
  • 2024.08.25拼多多
    1.树中删边多多有一颗n个节点的树,树中每一条边都有一个权值。多多还有一个长度为n的正整数序列:删除树中若干条边之后(或者不删),就会变成一个有x个连通块的图,此时的得分为:剩余边权和+((两个可以互相到达的节点属于同一个连通块,注意一个孤点也是一个连通块)多多可以删除图中......
  • 2024年该怎么写增删改查
    校验总结:快速失败校验放最外层节省内存xml都加条件标签然后其他的校验都根据业务以及具体情况来没有业务的时候要有空指针的校验避免空指针问题校验的细节见 该如何做参数校验-稳健国国王-博客园(cnblogs.com)魔法值问题建枚举类入参问题post请求put请求必须用@RequestBod......
  • Springboot + nacos + k8s 优雅停机
    需要处理的问题至少有一个服务可用K8S配置滚动部署策略服务下线后不再被调度服务关闭时主动下线nacos服务关闭时清理应用里的loadbalance实例列表缓存之前进来的请求可以返回延迟下线,最大可能保证功能结束业务服务配置nacos优雅停机优雅停机配置与最大等待......
  • 基于Java的共享经济背景下校园闲置物品交易平台(2024最新,原创项目)
    文章目录1.前言2.系统演示录像3.论文参考4.代码运行展示图5.技术框架5.1SpringBoot技术介绍5.2Vue技术介绍6.可行性分析7.系统测试7.1系统测试的目的7.2系统功能测试8.数据库表设计9.代码参考10.数据库脚本11.找我做程序,有什么保障?12.联系我们1.前......
  • 2024.09.12 1749版
    起于《海奥华预言》的思考◆地球管理结构和参考持续更新中...... 英文地址:https://github.com/zhuyongzhe/Earth/tags中文地址:https://www.cnblogs.com/zhuyongzhe85作者:朱永哲 ---------------------------------------------------------------------------------......
  • 2024最详细pycharm安装教程+最新pycharm专业版激活码
    一、Pycharm激活激活码(复制粘贴即可)KQ8KMJ77TY-eyJsaWNlbnNlSWQiOiJLUThLTUo3N1RZIiwibGljZW5zZWVOYW1lIjoiVW5pdmVyc2l0YXMgTmVnZXJpIE1hbGFuZyIsImxpY2Vuc2VlVHlwZSI6IkNMQVNTUk9PTSIsImFzc2lnbmVlTmFtZSI6IkpldOWFqOWutuahtiDorqTlh4blupflkI0iLCJhc3NpZ25lZUVtYWlsIjoibm......
  • KubeSphere 社区双周报| 2024.08.30-09.12
    KubeSphere社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过commit的贡献者,并对近期重要的PR进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。本次双周报涵盖时间为:2024.08.30-09.12。贡献者名单近期重要更新KubeSphereK......