使用 Kubernetes 对容器进行编排成为微服务时代的技术风向标。
更新记录
2022-07
- (07-31)「更新」系统参数配置相关内容;
2020-08
- (08-12)「初始」版本;
部署 Kubernetes
Kubernetes 有多种部署方式,一般不是很推荐使用 kubeadm
方式安装(主要是因为众所周知的大陆网络原因)但好在相关所需的镜像一般国内都有存档,可以使用国内容器仓库进行中转使用。
部署 kubeadm
在安装 kubeadm 工具箱之前需要确认软硬件兼容性:
要求
- 兼容的 Linux 主机。Kubernetes 为基于 Debian 和 Red Hat 的系列发行版以及那些没有包管理的发行版提供了说明;
- 每个节点都具有 2 GB 及以上 RAM
- 2 CPUs 双核及以上
- 集群内各节点网络互通(公网、私网皆可)
- 每个节点都有唯一的
hostname
、MAC address
和product_uuid
- 部分端口处于可用状态
- 禁用 Swap 分区,必须禁用交换分区以便
kubelet
服务正常工作
确认节点唯一
确保 MAC 地址和设备识别码在集群内唯一
- MAC 地址可以通过
ip link
或ifconfig -a
命令查看 - 设备识别码可以通过
sudo cat /sys/class/dmi/id/product_uuid
查看
部分虚拟机可能具有相同的值,Kubernetes 使用这些值进行唯一识别,如果这些值相同可能导致服务无法正常工作。
检查所需端口
全新机器可以跳过本步骤,主要是为了防止端口冲突导致。
控制节点
Protocol Direction Port Range Purpose Used By TCP Inbound 6443* Kubernetes API server All TCP Inbound 2379-2380 etcd server client API kube-apiserver, etcd TCP Inbound 10250 Kubelet API Self, Control plane TCP Inbound 10251 kube-scheduler Self TCP Inbound 10252 kube-controller-manager Self 工作节点
Protocol Direction Port Range Purpose Used By TCP Inbound 10250 Kubelet API Self, Control plane TCP Inbound 30000-32767 NodePort Services† All
禁用交换分区
Kubernetes 的 kubelet 使用需要禁用 Swap 交换分区,否则可能产生无法预料的错误。
sudo swapoff -a
小贴士:推荐在服务器安装时手动配置分区表,将 swap 分区删除,否则可能导致开机后自动挂载 swap 分区,也需要记得注释掉 fstab 中的 swap 分区,防止机器重启后自动挂载。
一键删除交换分区
grep swap /etc/fstab && sudo sed -i.bak '/swap/d' /etc/fstab
安装 Container Runtime
常见的 CRI 地址
Runtime | Unix 套接字地址 |
---|---|
containerd | unix:///var/run/containerd/containerd.sock |
CRI-O | unix:///var/run/crio/crio.sock |
Docker Engine (using cri-dockerd) | unix:///var/run/cri-dockerd.sock |
不同发行版
CentOS
配置仓库
海外及中国港澳台等地区请使用(官方镜像)
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
中国大陆请使用(阿里云镜像)
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
安装
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
sudo systemctl enable --now kubelet
小贴士:如果使用国内源安装时出现类似报错 GPG Error ,这是因为 GPG 同步异常,请使用 yum install -y --nogpgcheck
命令安装。
Debian
安装依赖
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl
配置仓库
海外及港澳台地区请使用(官方镜像)
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
中国大陆请使用(阿里云镜像)
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
安装
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
配置及优化
命令行补全
为 kubectl kubeadm 命令配置命令行补全功能
需要先创建补全目录
sudo mkdir /etc/bash_completion.d/
然后执行
kubectl
kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl
kubeadm
kubeadm completion bash | sudo tee /etc/bash_completion.d/kubeadm
附录
相关链接
参考链接
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2023-04-16 01:10 AM