基于Ubantu系统的k8s集群搭建
文章目录
前言
网上的高版本k8s搭建的文章还是比较少,所以自己排坑半天后也来发篇文章,希望可以帮助到大家。
一、Kubernetes是什么?
Kubernetes 最开始是由 Google 的工程师设计开发的。Google 作为 Linux 容器技术的早期贡献者之一,曾公开演讲介绍 Google 如何将一切都运行于容器之中(这是 Google 的云服务背后的技术)。Google 一周内的容器部署超过 20 亿次,全部的工作都由内部平台Borg支撑。Borg 是 Kubernetes 的前身,几年来开发 Borg 的经验教训也成了影响 Kubernetes 中许多技术的主要因素。
二、环境准备
ip地址规划如下:
节点名 | 内部IP地址 | 内部网关地址 |
k8s-master-1 | 192.168.1.1/24 | 192.168.1.254 |
k8s-node-1 | 192.168.1.2/24 | 192.168.1.254 |
k8s-node-2 | 19.168.1.3/24 | 192.168.1.254 |
依赖添加:
由于我是在测试环境中搭建的,所以使用root用户进行操作,我会标注每个节点需要进行什么步骤。
三节点操作
- 基本配置
#临时关闭swap
swapoff -a
#配置内核参数,开启路由转发功能
cat <<EOF | 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
#生效内核配置
sysctl -p
- 配置apt依赖,安装docker、cri-docker插件
这里有个大坑!!!就是当你的k8s集群版本高于cri-docker支持的版本的时候,在初始化k8s集群时会出现响应超时的情况,在确认service文件配置的参数没问题时,请确保cri-docker支
持你要部署的k8s集群!
#配置apt依赖环境
apt-get update
apt-get install -y ca-certificates curl gnupg lsb-release net-tools
#添加gpg密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker.gpg
#设置docker源密钥
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list
#安装docker
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
#获取新版cri-docker包
wget https://ghproxy.com/https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.2/cri-dockerd_0.3.2.3-0.ubuntu-jammy_amd64.deb
#安装cri-docker
dpkg -i cri-dockerd_0.2.5.3-0.ubuntu-jammy_amd64.deb
#添加cri-docker启动参数
sed -i -e 's#ExecStart=.*#ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.8#g' /usr/lib/systemd/system/cri-docker.service
#重新加载服务的配置文件并且启动服务
systemctl daemon-reload
sysetmctl start cri-docker
systemctl enable cri-docker
- 配置kubernetes源,国内使用阿里源加速拉取镜像
#更新apt源
apt-get update
apt-get install -y apt-transport-https curl
#配置阿里k8s源密钥
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
tee /etc/apt/sources.list.d/kubernetes.list <<-'EOF'
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
EOF
#三节点安装kubeadm、kubectl、kubelet
apt-get update
apt-get install -y kubelet=1.25.10-00 kubeadm=1.25.10-00 kubectl=1.25.10-00
三、修改初始化文件,配置初始化
Master节点:
可以提前拉取镜像并且打包成docker镜像包,来加速集群的搭建速度。
[root@k8s-master-1~]# kubeadm config print init-defaults > kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 192.168.1.1 #修改
bindPort: 6443
nodeRegistration:
criSocket: unix:///var/run/cri-dockerd.sock #修改
imagePullPolicy: IfNotPresent
name: k8s-master-1 #修改
taints: null
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers #修改
kind: ClusterConfiguration
kubernetesVersion: 1.25.10 #修改
networking:
dnsDomain: cluster.local
podSubnet: 10.244.0.0/16 #改
scheduler: {}
#master进行初始化,等待镜像拉取,如果提示cri报错,请检查是否是版本问题或者是cri-docker.service中的启动参数配置错误
[root@k8s-master-1~]# kubeadm init --config=kubeadm-config.yam
#进行基本配置
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf
Node节点:
node节点在加入集群时需要加上–cri-socket /var/run/cri-dockerd.sock参数来指定启动方式!
kubeadm join 192.168.1.1:6443 --cri-socket /var/run/cri-dockerd.sock --token 7dn4wz.v7uhvkf55b2vvi2h \
--discovery-token-ca-cert-hash sha256:3ebd007a152158a603af63aa6f8fd28247a015f4c183504037d003fb7fc9ecfb
四、安装Calio网络插件
Master节点:
k8s的网络插件可选flunnel、calio等,在安装后使用kubectl get po -A 可查看创建的pod,因为在拉取镜像所以会pending状态的时间比较长,需要耐心等待,等到pod全部running后即可看见node都转为Ready状态
#获取yaml文件
wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/tigera-operator.yaml
wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/custom-resources.yaml
#安装calio
kubectl create -f tigera-operator.yaml
kubectl create -f custom-resources.yaml
总结
花了一下午安装好的一个小型集群,希望可以给大家提供一点参考的思路! 交流q 1257455837