前置条件
- 三台虚拟机 (至少2c2g40g)
- 最小化安装ubuntu
ubuntu配置(三台虚拟机都修改)
- 设置主机名
主机名字分别为 k8s-master k8s-node1 k8s-node2
例如: hostnamectl set-hostname k8s-master
- 设置ip地址(三台虚拟机都修改)
主机ip分别为 192.168.236.160 / 161 / 162
sudo vim /etc/netplan/50-cloud-init.yaml
dhcp4: no # 右true修改为no
addresses:
- 192.168.236.100/24 # 每个人的网段都不一样,需要仔细查看本机ip并做修改,同routes
routes:
- to: default
via: 192.168.236.2
nameservers:
addresses: [119.29.29.29,114.114.114.114,8.8.8.8]
应用
netplan apply
- 设置ip地址对应主机名
编辑/etc/hosts文件追加
192.168.198.160 k8s-master
192.168.198.161 k8s-node1
192.168.198.162 k8s-node2
- 设置时区
timedatectl set-timezone Asia/Shanghai
-
关闭防火墙(由于ubuntu是最小化安装没有防火墙所有不需要关闭)
-
关闭selinux(由于ubuntu是最小化安装没有防火墙所有不需要关闭)
-
配置内核转发及网桥过滤
配置加载文件(ubuntu版本)
cat << EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
加载br_netfilter 和 overlay
modprobe br_netfilter
modprobe overlay
查看模块是否加载完成
lsmod | grep br_netfilter
lsmod | grep overlay
- 关闭swap分区
永久关闭swap分区
sudo vim /etc/fstab
注释掉 swap 配置
#/swap.img
- 重启
sudo reboot
安装containerd (三台虚拟机都安装)
从github上复制containerd下载链接 https://github.com/containerd/containerd/releases/tag/v1.7.27
下载cri-containerd-1.7.27-linux-amd64.tar.gz
下载可能比较慢可以去使用github镜像加速去下载
wget https://github.com/containerd/containerd/releases/download/v1.7.5/cri-containerd-1.7.27-linux-amd64.tar.gz
下载完解压tar
tar xf cri-containerd-1.7.27-linux-amd64.tar.gz -C /
添加配置文件
mkdir /etc/containerd
containerd config default > /etc/containerd/config.toml
修改配置文件
vi /etc/containerd/config.toml
修改containerd配置
sandbox_image = “registry.k8s.io/pause:3.8” 为 “registry.aliyuncs.com/google_containers/pause:3.10”
和
SystemCgroup = true
和
[plugins.“io.containerd.grpc.v1.cri”.registry]
config_path = “/etc/containerd/certs.d”
添加docker.io镜像
mkdir -p /etc/containerd/certs.d/docker.io
vim /etc/containerd/certs.d/docker.io/hosts.toml
server = "https://docker.io" # 原始仓库地址
# 国内加速源(可配置多个,按顺序尝试)
[host."https://hub-mirror.c.163.com"]
capabilities = ["pull", "resolve"]
[host."https://docker.m.daocloud.io"]
capabilities = ["pull", "resolve"]
[host."https://dockerproxy.com"]
capabilities = ["pull", "resolve"]
[host."https://docker.imgdb.de"]
capabilities = ["pull", "resolve"]
[host."https://docker-0.unsee.tech"]
capabilities = ["pull", "resolve"]
[host."https://docker.hlmirror.com"]
capabilities = ["pull", "resolve"]
[host."https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo"]
capabilities = ["pull", "resolve"]
[host."https://mirror.ccs.tencentyun.com"]
capabilities = ["pull", "resolve"]
[host."https://mirrors.huaweicloud.com/repository/docker-ce"]
capabilities = ["pull", "resolve"]
[host."https://mirrors.ustc.edu.cn/docker-ce"]
capabilities = ["pull", "resolve"]
[host."https://mirrors.163.com/docker-ce"]
capabilities = ["pull", "resolve"]
[host."https://k-docker.asia"]
capabilities = ["pull", "resolve"]
添加registry.k8s.io镜像
sudo vim /etc/containerd/certs.d/registry.k8s.io/hosts.toml
server = "https://registry.k8s.io"
[host."https://k8s.m.daocloud.io"]
capabilities = ["pull", "resolve"]
开机自启并现在启动
systemctl enable --now containerd
安装成功验证版本
ctr -v
查看镜像
ctr img ls
安装k8s组件(三台虚拟机都安装)
- 更新 apt 包索引并安装使用 Kubernetes apt 仓库所需要的包:
sudo apt-get update
# apt-transport-https 可能是一个虚拟包(dummy package);如果是的话,你可以跳过安装这个包
sudo apt-get install -y apt-transport-https ca-certificates curl gpg
- 下载用于 Kubernetes 软件包仓库的公共签名密钥。所有仓库都使用相同的签名密钥,因此你可以忽略URL中的版本:
# 如果 `/etc/apt/keyrings` 目录不存在,则应在 curl 命令之前创建它,请阅读下面的注释。
# sudo mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.33/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
- 添加 Kubernetes apt 仓库。 请注意,此仓库仅包含适用于 Kubernetes 1.33 的软件包; 对于其他 Kubernetes 次要版本,则需要更改 URL 中的 Kubernetes 次要版本以匹配你所需的次要版本 (你还应该检查正在阅读的安装文档是否为你计划安装的 Kubernetes 版本的文档)。
# 此操作会覆盖 /etc/apt/sources.list.d/kubernetes.list 中现存的所有配置。
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.33/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
- 更新 apt 包索引,安装 kubelet、kubeadm 和 kubectl,并锁定其版本当前版本为1.33.1所有没有修改版本:
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
- 指定版本安装k8s
yum install -y kubeadm-1.33.1 kubectl-1.33.1 kubelet-1.33.1
- 配置kubelet
vim /etc/default/kubelet
添加以下内容
KUBELET_EXTRA_ARGS= “–cgroup-driver=systemd”
- 设置开机自启动
systemctl enable kubelet
主节点安装配置
- 查看k8s配置需要的组件
kubeadm config images list
- 拉取镜像(通过阿里云镜像拉取)
kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers
- k8s初始化(注:在主节点k8s-master初始化)
kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.198.160 --image-repository registry.aliyuncs.com/google_containers
– kubernetes-version 使用现在安装的版本
– pod-network-cidr 固定为10.244.0.0/16
– apiserver-advertise-address 主节点地址192.168.198.160(之前敲错了,敲了个错误的地址192.168.198.0 害我半天没初始化成功,痛太痛了)
–image-repository registry.aliyuncs.com/google_containers 使用国内镜像不然国外镜像拉不下来
- k8s初始化失败后重置后重试以上步骤
kubeadm reset -f
- k8s初始化成功
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.198.160:6443 --token qbywv7.qork7e5iozqhkpbr \
--discovery-token-ca-cert-hash sha256:0063fd65cf4ae4bbde7353594ba51621d50752b2bae889007b0de30a9cde2276
- 主机输入命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown ( i d − u ) : (id -u): (id−u):(id -g) $HOME/.kube/config
- 查看集群节点
kubectl get nodes
- 在节点机上运行命令即可加入集群
kubeadm join 192.168.198.160:6443 --token qbywv7.qork7e5iozqhkpbr
–discovery-token-ca-cert-hash sha256:0063fd65cf4ae4bbde7353594ba51621d50752b2bae889007b0de30a9cde2276
- 查看节点运行组件
kubectl get pods -n kube-system
安装calico网络插件
官网下载https://docs.tigera.io/calico/latest/getting-started/kubernetes/quickstart
- 下载 tigera-operator(下载慢可以使用github加速镜像下载)
wget https://raw.githubusercontent.com/projectcalico/calico/v3.30.1/manifests/tigera-operator.yaml
- 然后安装
kubectl create -f tigera-operator.yaml
- 查看命名空间
kubectl get ns
- 查看tigara-operator内pod是否运行
kubectl get pods -n tigera-operator
- 下载custom-resources.yaml
wget https://raw.githubusercontent.com/projectcalico/calico/v3.30.1/manifests/custom-resources.yaml
- 修改custom-resources.yaml
vi custom-resources.yaml
将192.168.0.0 改为 10.244.0.0
- 加载
kubectl create -f custom-resources.yaml
- 测试是否通信
coredns是否running
kubectl get pods -n kube-system -o wide