Ubuntu22安装K8s(外网环境)

关于docker和k8s及组件的安装及安装源设置可以参考阿里云

docker安装:docker-ce镜像_docker-ce下载地址_docker-ce安装教程-阿里巴巴开源镜像站

k8s源及组件:kubernetes镜像_kubernetes下载地址_kubernetes安装教程-阿里巴巴开源镜像站

注意:命令未说明哪台主机即所有节点

1. 安装docker

卸载旧版本

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

1.1. 使用apt存储安装

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

1.2. 安装docker包

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

1.3. 安装后设置

1.3.1. 设置开机启动
sudo systemctl start docker
sudo systemctl enable docker
1.3.2. 以非root用户管理docker
  1. 创建docker组
    sudo groupadd docker
  2. 将当前用户添加到docker组
    sudo usermod -aG docker $USER
  3. 注销并重新登录

2. 安装kubeadm前配置

2.1. 关闭swap

sudo swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab

2.2. 修改系统内核参数

cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

# 应用 sysctl 参数而不重新启动
sudo sysctl --system
# sysctl -p /etc/sysctl.d/k8s.conf 加载配置

2.3. 配置时间同步

apt install -y chrony
systemctl status chronyd
systemctl start chronyd
systemctl enable chronyd
date

2.4. 加载网桥过滤模块

sudo modprobe overlay
sudo modprobe br_netfilter
lsmod | grep overlay
lsmod | grep br_netfilter

2.5. 优化ulimit

cat > sudo /etc/security/limits.conf <<EOF
soft nofile 65535
hard nofile 65536
EOF
# 或者用此方法
vim /etc/security/limits.conf
soft nofile 65535
hard nofile 65536

执行 ulimit -n 65535 立即生效。

2.6. 配置ipvs模块

apt install ipset ipvsadm -y


# Ubuntu 
# 检查
lsmod | grep ip_vs
sudo modprobe ip_vs
 # 轮询调度算法
sudo modprobe ip_vs_rr 
# 加权轮询调度算法
sudo modprobe ip_vs_wrr 
# 最小连接数调度算法
sudo modprobe ip_vs_lc  

# 查看对应的模块是否加载成功
[root@master ~]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4

2.7. 安装及仓库配置

2.7.1. 更新索引并下载密钥

更新 apt 包索引并安装使用 Kubernetes apt 仓库所需要的包:

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gpg

# 下载签名密钥
sudo mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

在低于 Debian 12 和 Ubuntu 22.04 的发行版本中,/etc/apt/keyrings 默认不存在。 应在 curl 命令之前创建它。

2.7.2. 添加仓库

此仓库仅包含适用于 Kubernetes 1.31 的软件包

# 此操作会覆盖 /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.31/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
2.7.2.1. 安装k8s组件

(1)安装kubelet kubeadm kubectl

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

(2)配置kubelet的cgroup - - 可选

systemctl stop kubelet
vi /etc/sysconfig/kubelet
# 修改为
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"
2.7.3. 修改配置
vi /etc/containerd/config.toml
注释掉其中的:disabled_plugins = ["cri"]
systemctl daemon-reload
sudo systemctl restart containerd

2.8. 部署Kubernetes集群

2.8.1. 镜像下载(所有节点)

如果可以VPN上网,直接:

kubeadm config images pull
2.8.2. 集群初始化(master)
sudo kubeadm init \
    --pod-network-cidr=10.244.0.0/16 \
    --service-cidr=10.96.0.0/12 \
    --apiserver-advertise-address=192.168.226.70



# 创建必要文件,使非 root 用户可以运行 kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 加入节点
kubeadm join 192.168.226.80:6443 --token jtkmbb.k47my5fsg12kymn2 --discovery-token-ca-cert-hash sha256:266f68e2e53c96b1cbcb774a779b3c1e975a1fb17c7b8e00f63b97db8f740e37 --node-role=worker
2.8.3. 安装网络插件
# 获取flannel配置文件
wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
# 使用配置文件启动flannel
kubectl apply -f kube-flannel.yml
2.8.4. 查看节点信息
kubectl get nodes

3. 问题处理

3.1. 节点无法使用kubectl命令

将master节点下/etc/kubernetes/admin.conf文件下传到其他节点

mkdir -p $HOME/.kube
sudo cp -i admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

3.2. 查看镜像

当前k8s使用的容器进行时为containerd,所以使用docker命令无法查看

使用命令:crictl images可查看

告警信息处理

编辑文件 vi /etc/crictl.yaml

runtime-endpoint: unix:///run/containerd/containerd.sock
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值