kubernetes集群完整部署流程

参考文档:
使用 kubeadm 引导集群
开始使用containerd
Kubernetes镜像(阿里云)
对 kubeadm 进行故障排查

1.准备环境(三台服务器都操作)

本文是在阿里云临时买了三台抢占式实例,平均每个小时2毛钱,三台机器的配置样相同(2核(vCPU) 4 GiB 5 Mbps),系统版本为ubuntu_20_04_x64,其中一台用作master节点,命名为k8s-001,另外两台作为worker节点,分别命名为k8s-002、k8s-003。

1-1.设置主机名映射

在每个主机的hosts文件中添加如下解析
注意:IP修改为你自己机器的可以互通的IP

172.26.140.175  k8s-001
172.26.140.174  k8s-002
172.26.140.173  k8s-003

2.安装容器运行时(三台服务器都操作)

我选择的是containerd

2-1.服务器配置修改 (开启ipv4转发)

以下命令直接在服务器命令行直接运行即可,(每个bash块为一行,一次性执行)
禁用交换分区

swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fsta

开启ipv4转发

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
cat <<EOF | sudo 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
sudo sysctl --system

2-2.安装containerd

1) 下载解压配置containerd

从https://github.com/containerd/containerd/releases下载containerd-1.6.25-linux-amd64.tar.gz,并将其解压到/usr/local

wget https://github.com/containerd/containerd/releases/download/v1.6.25/containerd-1.6.25-linux-amd64.tar.gz
tar Cxzvf /usr/local containerd-1.6.25-linux-amd64.tar.gz

从 https://raw.githubusercontent.com/containerd/containerd/main/containerd.service 下载文件到服务器
/usr/local/lib/systemd/system/containerd.service 并配置systemd启动containerd

wget https://raw.githubusercontent.com/containerd/containerd/main/containerd.service
mv containerd.service /usr/local/lib/systemd/system/containerd.service
systemctl daemon-reload
systemctl enable --now containerd

2) 安装runc

从https://github.com/opencontainers/runc/releases下载二进制文件runc.amd64,并将其安装为/usr/local/sbin/runc.

wget https://github.com/opencontainers/runc/releases/download/v1.1.10/runc.amd64
install -m 755 runc.amd64 /usr/local/sbin/runc

3) 安装cni

从https://github.com/containernetworking/plugins/releases下载cni-plugins-linux-amd64-v1.3.0.tgz,并将其解压到/opt/cni/bin:

wget https://github.com/containernetworking/plugins/releases/download/v1.3.0/cni-plugins-linux-amd64-v1.3.0.tgz
mkdir -p /opt/cni/bin
tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.1.1.tgz

4) 修改containerd 配置

containerd config default > /etc/containerd/config.toml

在 /etc/containerd/config.toml 中修改为如下配置:

结合 runc 使用 systemd cgroup 驱动

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
  ...
  [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
    SystemdCgroup = true

修改沙箱(pause)镜像为国内源

 [plugins."io.containerd.grpc.v1.cri"]
  sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"

4) 启动containerd

systemctl start containerd

如果已经在运行修改了配置,则重启容器运行时

systemctl restart containerd

3.安装 kubeadm、kubelet 和 kubectl(三台服务器都操作)

3-1.更新阿里镜像源

apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update

3-2.快速安装

apt-get install -y kubelet kubeadm kubectl

4.创建及配置集群(不同机器操作)

4-1.使用 kubeadm 创建集群(master节点操作)

1) 初始化集群

kubeadm init --pod-network-cidr 10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers

记住初始化完成后最后打印的命令,此命令为其他节点加入集群需要执行的命令
kubeadm join 172.26.140.175:6443 --token 3sm4el.df0875ye2mw5q0io --discovery-token-ca-cert-hash sha256:8ac4ed70d410f53c0185575bd13b06dd6405cb6bdb58733d0bcb311367ea517a

2) 安装网络插件

修改环境变量。使得root用户可以执行kubectl命令

export KUBECONFIG=/etc/kubernetes/admin.conf

如果是非root用户,可以通过复制配置文件方式使得普通用户拥有授权

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

3) 安装网络插件

我选用的是Flannel

kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

4) 验证

kubectl get pod -n kube-system

当执行上述命令,打印的pod status都为Running时,代表集群初始化成功

4-2.其他节点加入集群(worker节点操作)

1) 利用4-1-1打印的命令加入

kubeadm join 172.26.140.175:6443 --token 3sm4el.df0875ye2mw5q0io --discovery-token-ca-cert-hash sha256:8ac4ed70d410f53c0185575bd13b06dd6405cb6bdb58733d0bcb311367ea517a

2) 重新组合加入命令

过在控制平面节点上运行以下命令来获取令牌

kubeadm token list

如果令牌已经过期,则新建令牌

kubeadm token create

通过在控制平面节点上执行以下命令链来获取-discovery-token-ca-cert-hash 的值

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

组装命令

kubeadm join 172.26.140.175:6443 --token sf2ecx.owuxx3zvvlf493ri --discovery-token-ca-cert-hash sha256:8ac4ed70d410f53c0185575bd13b06dd6405cb6bdb58733d0bcb311367ea517a

3) 验证

kubectl get nodes

能把所有节点打印出来即成功

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值