k8s集群安装
公共操作:
安装相关依赖包:
apt-get install -y apt-transport-https ca-certificates curl gpg
apt-transport-https:用于通过 HTTPS 协议使用 APT 软件包管理器。
ca-certificates:包含用于验证 HTTPS 连接的证书颁发机构 (CA) 证书。
curl:用于在命令行中传输数据的工具。
gpg:用于加密、解密和签名数据的工具。
下载用于 Kubernetes 软件包仓库的公共签名密钥
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
添加 Kubernetes apt 仓库
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
更新 apt 包索引,安装 kubelet、kubeadm 和 kubectl,并锁定其版本:
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
apt-mark 命令是用于管理 Debian 系统中软件包的状态标记的工具。在这个特定的命令中,sudo apt-mark hold kubelet kubeadm kubectl 的作用是将 Kubernetes 相关的三个软件包标记为 "hold" 状态,以防止它们被自动升级或移除。
如果需要更新这些软件包,你可以使用 apt-mark unhold 命令取消 "hold" 状态,然后进行更新操作。
控制平面节点操作
初始化节点
kubeadm init --apiserver-bind-port=6443 --kubernetes-version=1.28.4 --image-repository=registry.aliyuncs.com/google_containers --cri-socket=unix:///run/cri-dockerd.sock --pod-network-cidr=192.168.0.0/16 --service-cidr=10.96.0.0/16
--apiserver-bind-port int32 默认值:6443 ; API 服务器绑定的端口。
--cri-socket 要连接的 CRI 套接字的路径。如果为空,则 kubeadm 将尝试自动检测此值; 仅当安装了多个 CRI 或具有非标准 CRI 套接字时,才使用此选项。
--kubernetes-version 为控制平面选择一个特定的 Kubernetes 版本。
--pod-network-cidr 指明 Pod 网络可以使用的 IP 地址段。根据选择安装的第三方网络插件设置。(calico指定为192.168.0.0/16)必填项
--image-repository 选择用于拉取控制平面镜像的容器仓库。建议选择国内镜像源
--service-cidr 为服务的虚拟 IP 地址另外指定 IP 地址段。
非root用户可操作kubectl
mkdir -p $HOME/.kube
创建一个名为 .kube 的隐藏文件夹,它将用于存储 Kubernetes 集群的访问配置文件。
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
admin.conf 包含了连接到 Kubernetes 集群所需的认证信息和配置。
sudo chown $(id -u):$(id -g) $HOME/.kube/config
这条命令用于更改新复制的 config 文件的所有者,确保当前用户具有对该文件的适当访问权限。
tips:当执行 kubectl 命令时,kubectl 会默认加载 $HOME/.kube/config 文件中的配置信息,并将其用于与 Kubernetes 集群进行通信。这意味着可以在该文件中配置多个集群的访问信息,然后使用 kubectl 切换不同的上下文来管理不同的集群。
警告:kubeadm 对 admin.conf 中的证书进行签名时,将其配置为 Subject: O = system:masters, CN = kubernetes-admin。 system:masters 是一个例外的、超级用户组,可以绕过鉴权层(例如 RBAC)。 不要将 admin.conf 文件与任何人共享,应该使用 kubeadm kubeconfig user 命令为其他用户生成 kubeconfig 文件,完成对他们的定制授权。
root用户
export KUBECONFIG=/etc/kubernetes/admin.conf
默认情况下,出于安全原因,集群不会在控制平面节点上调度 Pod。 如果希望能够在控制平面节点上调度 Pod
kubectl taint nodes --all node-role.kubernetes.io/control-plane-
安装 Pod 网络附加组件(Calico)
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.3/manifests/tigera-operator.yaml
安装 Tigera Calico 操作员和自定义资源定义。
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.3/manifests/custom-resources.yaml
通过创建必要的自定义资源来安装 Calico。
工作节点操作
kubeadm join --token <token> <control-plane-host>:<control-plane-port> --discovery-token-ca-cert-hash sha256:<hash> --cri-socket=unix:///run/cri-dockerd.sock
此命令为控制平面节点 init 成功后的输出
若令牌过期,或丢失上述指令可在控制平面节点使用如下指令重新获取:
kubeadm token create --print-join-command

浙公网安备 33010602011771号