新centos7 部署 k8s v1.26,简单易懂,跟着命令敲就完事

2023-04-06 00:00:00 集群 节点 部署 安装 网络

其实没什么好说的,搭环境搞了一整天,人已经麻了,踩了很多坑,网上教程的版本大都比较旧,总是和新版本各种地方不兼容,把坑踩完了,k8s目前新的版本是v1.26,跟着命令敲就行了,我已经重复部署了很多次了,坑已经排完了....

我试验的是1主2从结构,centos 2c2g 就足够。

centos7 部署 k8s 1m2n

1 系统环境准备#

1.1 配置主机名 【所有节点】#

[root@localhost ~]# hostnamectl set-hostname master0



[root@localhost ~]# cat /etc/hosts

192.168.19.128 master0

192.168.19.129 node0

192.168.19.130 node1

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

1.2 关闭selinux 【所有节点】#

sed -i 's/enforcing/disabled/' /etc/selinux/config 

setenforce 0

1.3 配置ip 【所有节点】#

vim /etc/sysconfig/network-scripts/ifcfg-ens33



IPADDR=192.168.19.129

GATEWAY=192.168.19.2

NETMASK=255.255.255.0

DNS1=8.8.8.8



service network restart
# 关闭swap

swapoff -a  

sed -ri 's/.*swap.*/#&/' /etc/fstab

1.4 安装ipvs 转发支持 【所有节点】#

# 系统依赖包

yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git



# 开启ipvs 转发

modprobe br_netfilter 



cat > /etc/sysconfig/modules/ipvs.modules << EOF 

#!/bin/bash 

modprobe -- ip_vs 

modprobe -- ip_vs_rr 

modprobe -- ip_vs_wrr 

modprobe -- ip_vs_sh 

modprobe -- nf_conntrack

EOF 



chmod 755 /etc/sysconfig/modules/ipvs.modules 

bash /etc/sysconfig/modules/ipvs.modules 

lsmod | grep -e ip_vs -e nf_conntrack

1.5 安装containerd 【所有节点】#

# 创建 /etc/modules-load.d/containerd.conf 配置文件:



cat << EOF > /etc/modules-load.d/containerd.conf

overlay

br_netfilter

EOF



modprobe overlay

modprobe br_netfilter

# 获取阿里云YUM源

wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo



# 下载安装:

yum install -y containerd.io

1.6 配置containerd [所有节点]#

# 生成containerd的配置文件

mkdir /etc/containerd -p 



# 生成配置文件

containerd config default > /etc/containerd/config.toml



# 编辑配置文件

vim /etc/containerd/config.toml



将 sandbox_image = "k8s.gcr.io/pause:3.6" 

改为:sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.6"





systemctl enable containerd

systemctl start containerd

二:安装k8s 1.26.x#

2.1 配置 k8s 1.26 的yum 源 【所有节点】#

# 添加阿里云YUM软件源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[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

EOF



yum makecache 

2.2 安装kubeadm,kubelet和kubectl 【所有节点】#

# 目前新版本是1.26.0,我们直接上新版

yum install -y kubectl kubelet kubeadm



# 设置kubelet为开机自启动即可,由于没有生成配置文件,集群初始化后自动启动

systemctl enable kubelet



# 准备k8s  1.26.0 所需要的镜像

kubeadm config images list --kubernetes-version=v1.26.0

2.3 集群初始化#

# 使用kubeadm init命令初始化 【主节点】

#在master0上执行,报错请看k8s报错汇总

echo 1 > /proc/sys/net/ipv4/ip_forward 

kubeadm init --kubernetes-version=v1.26.0 --pod-network-cidr=10.224.0.0/16 --apiserver-advertise-address=192.168.19.128 --image-repository registry.aliyuncs.com/google_containers



# 注释

# --apiserver-advertise-address 集群通告地址(此处设置为 master0 地址)

# --image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址

# --kubernetes-version K8s版本,与上面安装的一致

# --service-cidr 集群内部虚拟网络,Pod统一访问入口

# --pod-network-cidr Pod网络,,与下面部署的CNI网络组件yaml中保持一致



# 上面命令执行完后,会生成两条提示,分别执行

# root 用户,master0 上执行

export KUBECONFIG=/etc/kubernetes/admin.conf



# 其它节点加入集群 【子节点】

kubeadm join 192.168.19.128:6443 --token pb1jpq.ogibtvmpk29l7pol \

	--discovery-token-ca-cert-hash sha256:099131e6bfc2d69a9d68b3ee52e2d29bce0ad8b5193ffe2559d231c63713a04a




2.5 集群部署网络插件 【主节点】#

# 网络组件有很多种,只需要部署其中一个即可,推荐Calico。

# Calico是一个纯三层的数据中心网络方案,Calico支持广泛的平台,包括Kubernetes、OpenStack等。

# Calico 在每一个计算节点利用 Linux Kernel 实现了一个高效的虚拟路由器( vRouter) 来负责数据转发,而每个 vRouter 通过 BGP # 协议负责把自己上运行的 workload 的路由信息向整个 Calico 网络内传播。

# 此外,Calico 项目还实现了 Kubernetes 网络策略,提供ACL功能。

# 下载Calico

wget http://manongbiji.oss-cn-beijing.aliyuncs.com/ittailkshow/k8s/download/calico.yaml

kubectl apply -f calico.yaml
# 查看节点:

kubectl get node 

常用命令#

# 查询node

kubectl get nodes -o wide



# 查询 pod

kubectl get pods -o wide (-A 查询全部pod --namespace=‘default’ 默认查询命名空间为default)



# 查看pod详情

kubectl describe pod <pod name>

相关文章