Kubernetes安装部署

主机

角色

192.168.1000.11

master

192.168.1000.12

node1

192.168.1000.13

node2

一、环境配置(三台同步)

1、安装一些工具、每台都要安装 && 关闭防火墙和Selinux

yum -y install bash-completion wget vim-enhanced net-tools gc

systemctl stop firewalld.service 

systemctl disable firewalld.service
getenforce

cat /etc/selinux/config

sudo setenforce 0

sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

cat /etc/selinux/config

2、配置hosts(改成自己的)

hostnamectl set-hostname ks-m  && bash

hostnamectl set-hostname Service-node1   && bash

hostnamectl set-hostname ProM-node2   && bash
echo  "192.168.100.11  ks-m
192.168.100.12  service-node1
192.168.100.13  prom-ndoe2" >> /etc/hosts

3、设置时间同步

sudo yum -y install ntpdate
sudo ntpdate ntp1.aliyun.com
sudo systemctl status ntpdate
sudo systemctl start ntpdate
sudo systemctl status ntpdate
sudo systemctl enable ntpdate

4、关闭SWAP交换空间

sudo swapoff -a
sudo sed -i 's/.*swap.*/#&/' /etc/fstab
free -h

5、环境配置

k8s官网:Kubernetes Documentation | Kubernetes

下滑

# sysctl params required by setup, params persist across reboots
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
EOF

# Apply sysctl params without reboot
sudo sysctl --system

6、加载模块和ipv4、6的配置

https://v1-29.docs.kubernetes.io/docs/setup/production-environment/container-runtimes/

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

# sysctl params required by setup, params persist across reboots
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

# Apply sysctl params without reboot
sudo sysctl --system

net.bridge.bridge-nf-call-iptables  = 1

桥接卡 确保数据包ipv4被iptables和nat处理

net.bridge.bridge-nf-call-ip6tables = 1

桥接卡 确保数据包ipv6被iptables和nat处理

二、配置安装container\docker\nerdctl

1、安装container

#拉取1.7.22版本的container
wget https://github.com/containerd/containerd/releases/download/v1.7.22/containerd-1.7.22-linux-amd64.tar.gz
#解压安装包
tar -zxvf containerd-1.7.22-linux-amd64.tar.gz
#环境
cp bin/* /usr/local/bin/
#刷新进程
bash
#查看是否有版本输出
containerd -v
#创建配置文件
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
#将服务注册到systemctl
cat > /etc/systemd/system/containerd.service <<EOF
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target

[Service]
ExecStart=/usr/local/bin/containerd
Restart=always
RestartSec=5
Delegate=yes
KillMode=process
OOMScoreAdjust=-999
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity

[Install]
WantedBy=multi-user.target
EOF


#启动服务设置为自动启动
systemctl daemon-reload
systemctl enable containerd --now

2、修改配置文件

vim /etc/containerd/config.toml

registry.aliyuncs.com/google_containers/pause:3.9

/etc/containerd/certs.d

3、配置加速器

mkdir /etc/containerd/certs.d
cd /etc/containerd/certs.d/
mkdir docker.io
cd docker.io

vim hosts.toml

server = "https://docker.io"

[host."https://docker.1panel.live"]
  capabilities = ["pull", "resolve"]
  skip_verify = true
[host."https://docker.m.daocloud.io"]
  capabilities = ["pull", "resolve"]
  skip_verify = true
[host."https://https://j4dho57n.mirror.aliyuncs.com/"]
  capabilities = ["pull", "resolve"]
  skip_verify = true

重启服务

systemctl restart  containerd.service

4、安装docker

访问阿里云镜像站:http://mirrors.aliyun.com/

# step 1: 安装必要的一些系统工具以及镜像仓库
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# Step 2: 添加软件源信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# Step 3: 安装Docker
sudo yum install docker-ce docker-ce-cli docker-buildx-plugin docker-compose-plugin -y

# Step 4: 开启Docker服务
sudo service docker start

5、下载安装nerdctl

下载链接:wget https://github.com/containerd/nerdctl/releases/download/v1.7.7/nerdctl-1.7.7-linux-amd64.tar.gz

wget https://github.com/containerd/nerdctl/releases/download/v1.7.7/nerdctl-1.7.7-linux-amd64.tar.gz
tar -zxvf nerdctl-1.7.7-linux-amd64.tar.gz 
mv nerdctl /usr/local/sbin
chmod 777 /usr/local/sbin/nerdctl
nerdctl -v 
#测试
nerdctl pull busybox:1.36

三、安装部署k8s(三台同步)

1、关闭交换分区

vim /etc/sysctl.d/k8s.conf

vm.swappiness = 0

sysctl --system

2、下载“包”

登录阿里云官方镜像站

阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区

cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/    
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/repodata/repomd.xml.key
EOF
setenforce 0
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet

3、编辑用户变量

vim  .bashrc 
###############
source <(nerdctl completion bash)
source <(kubeadm completion bash)
source <(kubectl completion bash)
source <(crictl completion bash)
###############
source .bashrc 

4、解决crictl命令报错的问题

crictl config runtime-endpoint unix:///run/containerd/containerd.sock
crictl images

vim /etc/crictl.yaml 

好了

5、k8s 初始化(仅在master节点主机上执行)

kubeadm config print init-defaults > init.yaml
vim init.yaml

写local API 你猜是那个IP

registry.aliyuncs.com/google_containers

给(三台)设备都加上开机自启哈

systemctl enable kubelet.service

在master初始化

kubeadm init --config=init.yaml

node节点的复制过去不用回车 等配置完网络的

复制到浏览器访问Calico

复制路径 复制内容自己配置yaml文件

四、配置calico网络

将全部内容复制下来粘贴到自己创建的calico.yaml

vim calico.yaml

kubectl apply -f calico.yaml #部署calico网络 同时另外两台node回车 加入集群

3、k8s命令补全

! grep -q kubectl "$HOME/.bashrc" && echo "source /usr/share/bash-completion/bash_completion" >>"$HOME/.bashrc"
! grep -q kubectl "$HOME/.bashrc" && echo "source <(kubectl completion bash)" >>"$HOME/.bashrc"
! grep -q kubeadm "$HOME/.bashrc" && echo "source <(kubeadm completion bash)" >>"$HOME/.bashrc"
! grep -q crictl "$HOME/.bashrc" && echo "source <(crictl completion bash)" >>"$HOME/.bashrc"
source "$HOME/.bashrc"

4、常用命令

# 获取节点
kubectl get nodes -o wide
# 实时查询nodes状态
watch kubectl get nodes -o wide
# 获取pod
kubectl get pods --all-namespaces -o wide
# 查看镜像列表
kubeadm config images list
# 节点加入集群
kubeadm token create --print-join-command
# 描述node
kubectl describe node k8s-master
# 描述pod
kubectl describe pod kube-flannel-ds-hs8bq --namespace=kube-system

五、编辑脚本,防止k8s内存过大系统故障

vim /etc/rsyslog.d/01-blocklist.conf

if $msg contains "run-containerd-runc" and $msg contains "mount: Deactivated successfully."
then {
        stop
}

systemctl restart rsyslog.service

六、升级内核(提前看)

出现需要内核升级得情况看这个

三台设备同步

1、手动拉取内核 RPM

因为ELRepo 源都是最新版本 可能你用的时候wget是404 所以需要去看一下你拉取得版本是否是存在得:

http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.203-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-headers-5.4.203-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.203-1.el7.elrepo.x86_64.rpm

2、安装内核

rpm -ivh kernel-lt-5.4.203-1.el7.elrepo.x86_64.rpm 
rpm -ivh kernel-lt-devel-5.4.203-1.el7.elrepo.x86_64.rpm 

3、查看启动顺序、设置启动顺序、重启生效

#查看启动顺序
rpm -qa | grep kernel
#设置启动顺序
grub2-set-default 0
#重启生效
reboot

5、设置内核启动顺序、重新创建内核配置

grub2-set-default 0

grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

7、使用uname -r查看内核版本是否升级成功

uname -r

8、加载br_netfilter模块

###修改升级后的内核参数

modprobe br_netfilter

9、验证模块是否加载成功

lsmod | grep br_netfilter

10、修改内核参数

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

vm.swappiness = 0

EOF

11、使更改生效

sysctl --system


Kubernetes安装部署
https://www.gmqgmq.cn//archives/kubernetesan-install
作者
啊耿不累
发布于
2025年02月21日
许可协议