9.4 K8s部署

设置master主的hostname 为 k8s-master

设置slave的hostname 为k8s-node01  以及02

停用防火墙 停用NetworkManger SELinux

K8s-master      192.168.2.20

K8s-node01      192.168.2.21

K8s-node02      192.168.2.22

前期准备

K8s-master主机:

1.

[root@k8s-master ~]# vim /etc/hosts   //在最后添加

192.168.2.20 k8s-master

192.168.2.21 k8s-node01

192.168.2.22 k8s-node02

2.配置yum源

[root@k8s-master ~]# cd /etc/yum.repos.d/

[root@k8s-master yum.repos.d]#  vim kubernetes.repo

# K8S软件源

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

enabled=1

gpgcheck=0

repo_gpgcheck=0

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

[root@k8s-master yum.repos.d]# vim docker-ce.repo

# docker软件源

[docker-ce-stable]

name=Docker CE Stable - $basearch

baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stable

enabled=1

gpgcheck=1

gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-stable-debuginfo]

name=Docker CE Stable - Debuginfo $basearch

baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/debug-$basearch/stable

enabled=0

gpgcheck=1

gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-stable-source]

name=Docker CE Stable - Sources

baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/source/stable

enabled=0

gpgcheck=1

gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test]

name=Docker CE Test - $basearch

baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/test

enabled=0

gpgcheck=1

gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test-debuginfo]

name=Docker CE Test - Debuginfo $basearch

baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/debug-$basearch/test

enabled=0

gpgcheck=1

gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test-source]

name=Docker CE Test - Sources

baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/source/test

enabled=0

gpgcheck=1

gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly]

name=Docker CE Nightly - $basearch

baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/nightly

enabled=0

gpgcheck=1

gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly-debuginfo]

name=Docker CE Nightly - Debuginfo $basearch

baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/debug-$basearch/nightly

enabled=0

gpgcheck=1

gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly-source]

name=Docker CE Nightly - Sources

baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/source/nightly

enabled=0

gpgcheck=1

gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[root@k8s-master yum.repos.d]# yum clean all && yum makecache

安装必备工具
yum install wget jq psmisc vim net-tools telnet yum-utils device-mapperpersistent-data lvm2 git -y

同步时间
yum -y install ntpdate

crontab -e

* 5 * * * /usr/sbin/ntpdate time2.aliyun.com

配置limit
[root@k8s-master ~]# ulimit -SHn 65535 # 单个进程可以打开的⽂件数量将被限制为 65535

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

# 末尾添加如下内容

* soft nofile 65536

* hard nofile 131072

* soft nproc 65535

* hard nproc 655350

* soft memlock unlimited

* hard memlock unlimited

配置免密登录
安装k8s高可用性Git仓库
# 在 /root/ ⽬录下克隆⼀个名为 k8s-ha-install.git 的 Git 仓库

[root@k8s-master yum.repos.d]# cd

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

[root@k8s-master ~]# ls

anaconda-ks.cfg  k8s-ha-install

配置内核模块
配置ipvs模块
yum install ipvsadm ipset sysstat conntrack libseccomp -y   //安装ipvs相关的应用

[root@k8s-master ~]# modprobe -- ip_vs    # 使⽤ modprobe 命令加载内核模块,核⼼ IPVS 模块。

[root@k8s-master ~]# modprobe -- ip_vs_rr    # IPVS 负载均衡算法 rr

[root@k8s-master ~]# modprobe -- ip_vs_wrr    # IPVS 负载均衡算法 wrr

[root@k8s-master ~]# modprobe -- ip_vs_sh     # ⽤于源端负载均衡的模块

[root@k8s-master ~]# modprobe -- nf_conntrack    # ⽤于⽹络流量过滤和跟踪的模块

[root@k8s-master ~]# vim /etc/modules-load.d/ipvs.conf

ip_vs

ip_vs_lc

ip_vs_wlc

ip_vs_rr

ip_vs_wrr

ip_vs_lblc

ip_vs_lblcr

ip_vs_dh

ip_vs_sh

ip_vs_fo

ip_vs_nq

ip_vs_sed

ip_vs_ftp

ip_vs_sh

nf_conntrack

ip_tables

ip_set

xt_set

ipt_set

ipt_rpfilter

ipt_REJECT

ipip

systemctl enable --now systemd-modules-load.service

systemctl start systemd-modules-load.service

yum -y install kubernetes

2. 配置 k8s 内核

[root@k8s-master ~]# 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 # TCPTIME_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 # ⽤于设置系统中最⼤的监听队列的⻓度

[root@k8s-master ~]# reboot

# 保存后,所有节点重启,保证重启后内核依然加载

四、基本组件安装

1. 安装 Containerd

(1)安装docker

[root@k8s-master ~]# yum remove -y podman runc containerd      # 卸载之前的containerd

[root@k8s-master ~]# yum install docker-ce dockerce-cli containerd.io -y       # 安装Docker和containerd

如果出现冲突,就先卸载docker

yum -y remove docker

yum install  containerd.io -y

yum install docker-ce docker-ce-cli -y

yum list|grep docker

配置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

vim /etc/sysctl.d/99-kubernetes-cri.conf

net.bridge.bridge-nf-call-iptables = 1 # ⽤于控制⽹络桥接是否调⽤iptables进⾏包过滤和转发。

net.ipv4.ip_forward = 1 # 路由转发,1为开启

net.bridge.bridge-nf-call-ip6tables = 1 # 控制是否在桥接接⼝上调⽤IPv6的iptables进⾏数据包过滤和转发。

systctl --system  #使配置都生效

(4)containerd 配置文件

[root@k8s-master ~]# mkdir -p /etc/containerd

[root@k8s-master ~]# containerd config default | tee /etc/containerd/config.toml # 读取containerd 的配置并保存到/etc/containerd/config.toml

[root@k8s-master ~]# vim /etc/containerd/config.toml

# 找到containerd.runtimes.runc.options模块,添加SystemdCgroup = true,如果已经存在则直接修改

[plugins."io.containerd.grpc.v1.cri".containerd.ru

ntimes.runc.options]

BinaryName = ""

CriuImagePath = ""

CriuPath = ""

CriuWorkPath = ""

IoGid = 0

IoUid = 0

NoNewKeyring = false

NoPivotRoot = false

Root = ""

ShimCgroup = ""

SystemdCgroup = false # 没有就添加,有的话就修改

# 找到sandbox_image修改为如下参数

sandbox_image = "registry.cn

hangzhou.aliyuncs.com/google_containers/pause:3.9"

[root@k8s-master ~]# systemctl daemon-reload # 加载systemctl控制脚本

[root@k8s-master ~]# systemctl enable --now containerd # 启动containerd并设置开机启动

配置crictl客户端连接的运行位置
[root@k8s-master ~]# cat > /etc/crictl.yaml <<EOF # 配置容器运⾏环境的crictl.yml⽂件

> runtime-endpoint: unix:///run/containerd/containerd.sock # 指定了容器运⾏时的地址为:unix://...

> image-endpoint: unix:///run/containerd/containerd.sock # 指定了镜像运⾏时的地址为:unix://...

> timeout: 10 # 设置了超时时间为10秒

> debug: false # 关闭调试模式

> EOF

安装kubernetes组件
安装 Kubeadm、Kubelet 和 Kubectl

[root@k8s-master ~]# yum list kubeadm.x86_64 --showduplicates | sort -r

# 查询最新的Kubernetes版本号

[root@k8s-master ~]# yum install kubeadm-1.28* kubelet-1.28* kubectl-1.28* -y

# 安装1.28最新版本kubeadm、kubelet和kubectl

[root@k8s-master ~]# systemctl daemon-reload

[root@k8s-master ~]#systemctl start kubelet.service

[root@k8s-master ~]#systemctl start kubeadm.service

[root@k8s-master ~]#systemctl start kubelet.service

[root@k8s-master ~]# systemctl enable --now kubelet # 允许开机⾃启kubelet

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值