k8s1.30部署(centos7)

-
2024-06-30

环境准备:

  • 域名解析
  • 互信
  • 防火墙 ,selinux
  • 关闭swap分区
  • #时间同步
  • #更新内核

配置内核路由转发和网桥过滤:

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
#加载模块
modprobe br_netfilter 
modprobe overlay
sysctl --system
##执行
sysctl -p /etc/sysctl.d/k8s.conf

#代理模式可能由iptable切换成ipvs通过ipset:

yum install -y ipset ipvsadm
#加载模块
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

dockers和cri准备

docker官方脚本安装:curl -fsSL https://get.docker.com | bash -s docker

cri-dockergit不必地址:https://github.com/Mirantis/cri-dockerd

wget对应的cri-docker包之后,yum安装即可,安装完毕后设置开机自启动docker和cridockers

修改/usr/lib/systemd/system/cri-docker.service配置文件:


vim /usr/lib/systemd/system/cri-docker.service

修改第十行,ExecStart字段,在/usr/bin/cri-docker后覆盖添加如下

--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9
#这里设置镜像地址,以及pause版本,这个版本可以在kubeadm config images list 看到

systemctl enable --now cri-docker

启动后会在/var/run产生套接字文件cri-dockerd.sock

集群部署

配置安装源可以在官网看到源地址,也可以在国内例如阿里查到安装源地址,实际上官方地址替换版本号也可

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF

安装 kubelet、kubeadm 和 kubectl,并启用 kubelet 以确保它在启动时自动启动:

sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
sudo systemctl enable --now kubelet

配置kubelet的cgroup

vim /etc/sysconfig/kubectl

KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
systemctl enable kubelet

拉去所需镜像:

默认安装这些镜像:

#镜像列表
kubeadm config images list 

在使用docker+cri方案,拉去时需要指定docker的套接字文件

kubeadm config images pull --cri-socket unix:///var/run/cri-dockerd.sock

集群初始化

kubeadm init --kubernetes-version=1.30.2 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=10.0.2.1 --cri-socket unix:///var/run/cri-dockerd.sock

执行完之后,更具提示执行结果前三行,然后再节点机器执行最后一行(在节点机器执行时也要加上套接字文件)--cri-socket=unix:///var/run/cri-dockerd.sock

网络插件

其中flannel和calico这两款网络插件都是企业应用较为广泛的插件

这里用calico

打开官网:https://docs.tigera.io/calico/latest/getting-started/kubernetes/quickstart

在侧栏,Install Calico-Kubernetes-Quickstart for Calico on Kubernetes部分能看到两个k8s配置文件

第一个正常执行

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/tigera-operator.yaml

第二个因为要修改网段,先下载下来修改后再执行

wget https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/custom-resources.yaml

编辑其中cidr网段为集群初始化设置的网段,再:kubectl apply -f custom-resources.yaml

安装配置dashboard

https://github.com/kubernetes/dashboard查看版本对应,ps最新版好像没有支持到1.30.2,

配置自动补全:

安装bash-completion:

yum install -y bash-completion

将bash-completion提供的脚本生效

source /usr/share/bash-completion/bash_completion

生成kubectl的completion bash的脚本文件

kubectl completion bash > ~/.kube/completion.bash.inc

source ~/.kube/completion.bash.inc

设置开机自启动:

cat >> ~/.bash_profile << EOF
source /root/.kube/completion.bash.inc
EOF

检查

cat .bash_profile | tail -n 3

命名空间工具

https://github.com/ahmetb/kubectx/releases/tag/v0.9.5
 

下载对应版本放到/usr/local/bin下·就行


目录