kubernetes云平台搭建
1.搭建准备
主机名 配置 网络
mater 8h8c 60g 192.168.110.130
node 8h8c 60g 192.168.110.131
2.前期配置
(以下未标注为所有主机都要操作,标题后标注为标注的主机)
更新yun源
bash <(curl -sSLk https://cdn.b52m.cn/static/linuxsource.sh)
配置主机名,网络,互相添加hosts
清空防火墙和关闭selinux和swap
iptables -F
iptables -t nat -F
setenforce 0
sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config
swapoff -a
vi /etc/fstab
注释swap的挂载
修改内核参数
cat > /etc/sysctl.conf << EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
modprobe br_netfilter
sysctl -p
显示以上配置完成
3.安装Docker
bash <(curl -sSLk https://blog.koniaoer.top/upload/docker-v3.sh)
修改docker配置文件
cat > /etc/docker/daemon.json << EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "10"
},
"registry-mirrors": ["https://dh.b52m.cn"]
}
EOF
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
4.开始搭建
添加kubernetes安装源
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
安装kubeadm、kubelet、kubectl(ps:k8s版本时常更新,本博客使用1.30版本是目前最新,如果无法搭建成功,请大家更换版本和安装源版本)
yum install -y kubelet-1.30.0 kubeadm-1.30.0 kubectl-1.30.0 --disableexcludes=kubernetes
systemctl enable kubelet --now
修改kubelet容器运行时
#生成containerd 的默认配置文件
containerd config default > /etc/containerd/config.toml
#修改默认配置文件
# 原文本
sandbox_image = "registry.k8s.io/pause:3.6"
# 修改为 这是国内镜像站 若你使用的国外机器 可不进行修改
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"
# 原文本
SystemdCgroup = false
# 修改为
SystemdCgroup = true
systemctl restart containerd
containerd config default | \
sed -e 's|registry\.k8s\.io/pause:[0-9.]\+|k8s\.b52m\.cn\/pause:3.9|g' \
-e 's/SystemdCgroup = .*/SystemdCgroup = true/' \
-e 's/\[plugins."io.containerd.grpc.v1.cri".registry.mirrors\]/&\n [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]\n endpoint = ["https:\/\/dh\.b52m\.cn"]\n/' \
-e 's/\[plugins."io.containerd.grpc.v1.cri".registry.mirrors\]/&\n [plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"]\n endpoint = ["https:\/\/k8s\.b52m\.cn"]\n/' \
-e '/^\s*$/d' | \
sudo tee /etc/containerd/config.toml
crictl config runtime-endpoint /var/run/containerd/containerd.sock
crictl config image-endpoint /var/run/containerd/containerd.sock
systemctl restart containerd
crictl pull nginx:latest
crictl images
拉取成功代表目前一起配置正常
5.master操作
注意:这里--apiserver-advertise-address为master的IP,一定要修改!!!
kubeadm init --kubernetes-version=v1.30.0 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.110.130 --image-repository=registry.aliyuncs.com/google_containers
--kubernetes-version: 用于指定我们要安装的kubernetes的版本
--image-repository: 用于指定我们要拉取镜像的仓库
--service-cidr: svc的ip段
--pod-network-cidr: pod的ip段,flannel, 10.244.0.0/16
默认情况下,我们安装的kube-apiserver、kube-scheduler、kube-controller-manager、kube-proxy、etcd会全部以容器的形式安装
如果上面ip没有修改,或者出错了请清理缓存,重新执行
#执行错误
kubeadm reset -f
rm -rf /etc/kubernetes/*
rm -rf /var/lib/kubelet/*
rm -rf /var/lib/etcd/*
执行成功后,创建kube目录,并设置环境变量
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
检测master节点
kubectl get nodes
/
/
/
/
/
/
/
/
/
/
/
/
6.添加node节点
在master节点中获取token
kubeadm token create --print-join-command
把获取到的token直接粘贴入node节点中(如图)
可以看到新加入的node节点,但是是处于未准备状态,需要加载一个网络插件
git官网
mkdir /calico
cd /calico/
wget https://github.com/projectcalico/calico/releases/download/v3.24.2/release-v3.24.2.tgz
koNer节点
mkdir /calico
cd /calico/
wget https://down.b52m.cn/d/test/release-v3.24.2.tgz -O release-v3.24.2.tgz
在需要加载的节点中运行
tar -xvf release-v3.24.2.tgz
cd release-v3.24.2/images
ctr -n k8s.io images import calico-cni.tar
ctr -n k8s.io images import calico-node.tar
ctr -n k8s.io images import calico-dikastes.tar
ctr -n k8s.io images import calico-pod2daemon.tar
ctr -n k8s.io images import calico-flannel-migration-controller.tar
ctr -n k8s.io images import calico-typha.tar
ctr -n k8s.io images import calico-kube-controllers.tar
在master运行(加载calico文件)
kubectl apply -f calico.yaml
再检测
kubectl get nodes
可以看到master和node节点已经处于准备状态了
7.kubectl命令补全
echo "source <(kubectl completion bash)" >> /etc/profileb
source /etc/profile
yum -y install bash-completion
bash
source /etc/profile
使用kubectl desc然后按top,查看是否能补全为kubectl describe
评论区