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

 
posted @ 2023-10-27 17:22  花都八达鸟  阅读(91)  评论(0)    收藏  举报