Ubuntu系统设置静态固定IP保姆级教程
修改主机名
sudo hostnamectl set-hostname k8s-master
关闭防火墙
systemctl status ufw.service
systemctl stop ufw.service
systemctl disable ufw.service
apt-get update
安装docker
apt install -y docker.io
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://u4boahgk.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
关闭swap分区
临时关闭
swapoff -a
永久禁用:
vim /etc/fstab 打开文件按照下图注释一行。
使用 free -m 命令来查看确认交换分区已经被禁用
修改改为国内镜像源地址
备份配置文件sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak修改镜像源为华为云镜像sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.listsudo sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
主机名与IP地址解析配置
cat >> /etc/hosts << EOF
192.168.234.114 k8s-master
192.168.234.115 k8s-node1
192.168.234.116 k8s-node2
EOF
配置内核转发及网桥过滤:
cat > /etc/modules-load.d/k8s.conf << EOF
overlay
br_netfilter
EOF
加载配置:
modprobe overlaymodprobe br_netfilter
查看是否加载:
lsmod |grep overlaylsmod |grep br_netfilter
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
EOF
让配置生效:
sysctl -p /etc/sysctl.d/k8s.conf
查看是否加载生效
lsmod |grep br_netfilter
安装ipset和ipvsadm
apt install ipset ipvsadm
然后执行配置 ipvsadm 模块,用于开机自启动的,可以使用vi /etc/modules-load.d/ipvs.conf查看是否配置成功
cat << EOF | tee /etc/modules-load.d/ipvs.conf
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
EOF
因为本次也需要启动,所以需要在配置一个脚本用于本次启动的
配置脚本文件
cat << EOF | tee ipvs.sh
#!/bin/sh
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
执行刚刚创建的脚本
sh ipvs.sh
通过下面的命令查看是否配置成功
lsmod | grep ip_vs
容器运行时containetd
wget https://github.com/containerd/containerd/releases/download/v1.7.15/cri-containerd-1.7.15-linux-amd64.tar.gz
解压并查看
tar xf cri-containerd-1.7.15-linux-amd64.tar.gz -C /which containerd
containerd配置文件生成并修改
创建文件:
mkdir /etc/containerd
生成配置文件:
containerd config default > /etc/containerd/config.toml
vim /etc/containerd/config.toml
修改第65行sandbox_image的值改为registry.aliyuncs.com/google_containers/pause:3.9,改为阿里的镜像地址和版本号。(镜像地址也可以不修改,只需要修改版本号也行,需要和后面–>8.1、集群初始化介绍的kubeadm-config.yaml文件的一致就行)
需要137行的false改为true
保存好退出
配置镜像加速
修改Config.toml文件vim /etc/containerd/config.toml。如下:
config_path = "/etc/containerd/certs.d"
加速器地址:
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors?accounttraceid=bc13766a0ea243b0a4779ee8dfcca203ruwy
创建上图相应的文件目录mkdir -p /etc/containerd/certs.d/docker.io配置加速cat > /etc/containerd/certs.d/docker.io/hosts.toml << EOF
server = "https://docker.io"
[host."https://u4boahgk.mirror.aliyuncs.com"]capabilities = ["pull", "resolve"]
EOF
启动并设置开机自启
systemctl enable --now containerd
查看版本:
containerd --version
2、集群部署(所有服务器都需要操作)
1、下载用于kubernetes软件包仓库的公告签名密钥
k8s社区源(和下面的阿里云源二选一即可)
创建目录:
sudo mkdir -p /etc/apt/keyrings/
下载密钥
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
阿里云源
创建目录:
sudo mkdir -p /etc/apt/keyrings/
下载密钥
sudo apt install curl
curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
k8s社区(和下面的阿里云源二选一即可)
添加kubernetes apt仓库
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
阿里云
添加kubernetes apt仓库
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
更新仓库
apt-get update
查看软件列表:
apt-cache policy kubeadm
安装指定版本:
sudo apt-get install -y kubelet=1.30.0-1.1 kubeadm=1.30.0-1.1 kubectl=1.30.0-1.1
修改kubelet配置
vim /etc/sysconfig/kubeletKUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
设置为开机自启
systemctl enable kubelet
锁定版本,防止后期自动更新。
sudo apt-mark hold kubelet kubeadm kubectl
解锁版本,可以执行更新
sudo apt-mark unhold kubelet kubeadm kubectl
3、集群初始化:(k8s-master节点操作)
查看版本
kubeadm version
- 创建kubeadm-config配置文件
把配置文件打印到本地,用于编辑
kubeadm config print init-defaults > kubeadm-config.yaml
ls
修改文件
修改拉下来的配置文件
vim kubeadm-config.yaml
修改advertiseAddress的ip为mater节点的ip
修改name为mater节点的主机名
修改imageRepository仓库地址为阿里云的镜像仓库registry.aliyuncs.com/google_containers。因为前面/etc/containerd/config.toml文件修改了,如果前面的文件镜像仓库地址没修改,这个地方也可以不修改
修改kubernetesVersion版本号,前面下载的是什么版本就写什么版本
dnsDomain表示DNS域名,可以不修改,但一个局域网内只能有一个相同的,如果有两个k8s集群用的一样的DNS名字就会冲突,一般推荐修改为公司的域名
在networking中的 serviceSubnet 后面添加
podSubnet: 10.244.0.0/16
在最后面在添加下面的配置
---
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: systemd
重启服务
修改完,分别重启containerd 和 kubelet
systemctl restart containerd
systemctl restart kubelet
查看镜像
kubeadm config images list --config kubeadm-config.yaml
下载镜像
kubeadm config images pull --config kubeadm-config.yaml
如果出现报错镜像拉取不下来如下图错误
解决办法(我们在阿里云仓库进行拉取镜像)
kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers
查看镜像
crictl images
初始化集群
kubeadm init --config kubeadm-config.yaml
出现下面的,就表示初始化成功了
初始完成后按照反馈的命令执行mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
查看节点
kubectl get nodes
添加从节点(node1,和node2)
复制刚刚自己初始化的地址,到从节点执行,也就是另外两个worker02节点
(!!!这个是我的,需要复制自己的)
在k8s-node1和k8s-node2上执行
kubeadm join 192.168.234.114:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:6e31583e23ecb1603cc53e3dfa60b26f9da6b260e577180772a2bb3d36f97735
主节点执行
kubectl get nodes