K8S之node节点部署

master节点之前我们已经部署好,它主要是集中化管理node节点,现在我们要部署node节点了。
程序的下载地址: https://github.com/kubernetes/kubernetes/releases 还是在列表中选择相应版本

wget https://dl.k8s.io/v1.10.2/kubernetes-node-linux-amd64.tar.gz
tar -zxvf  kubernetes-node-linux-amd64.tar.gz

把kubelet kube-proxy这两个文件复制到安装目录(/opt/kubernetes/bin)下,,并给于相关的可执行权限 chmod +x

1.安装kubelet

为了更快接的安装在此我们生成一个shell脚本,首先定义shell脚本的两个参数

NODE_ADDRESS=${1:-"192.168.1.7"}
DNS_SERVER_IP=${2:-"10.10.10.2"}

1.生成kubelet配置

cat <<EOF >/opt/kubernetes/cfg/kubelet

KUBELET_OPTS="--logtostderr=true \\
--v=4 \\
--address=${NODE_ADDRESS} \\
--hostname-override=${NODE_ADDRESS} \\
--kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig \\
--experimental-bootstrap-kubeconfig=/opt/kubernetes/cfg/bootstrap.kubeconfig \\
--cert-dir=/opt/kubernetes/ssl \\
--allow-privileged=true \\
--cluster-dns=${DNS_SERVER_IP} \\
--cluster-domain=cluster.local \\
--fail-swap-on=false \\
--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0"

EOF

2.生成kubelet服务配置

cat <<EOF >/usr/lib/systemd/system/kubelet.service
[Unit]
Description=Kubernetes Kubelet
After=docker.service
Requires=docker.service

[Service]
EnvironmentFile=-/opt/kubernetes/cfg/kubelet
ExecStart=/opt/kubernetes/bin/kubelet \$KUBELET_OPTS
Restart=on-failure
KillMode=process

[Install]
WantedBy=multi-user.target
EOF

3.刷新配置并启动服务

systemctl daemon-reload
systemctl enable kubelet
systemctl restart kubelet

2.安装kube-proxy

为了更快接的安装在此我们生成一个shell脚本,首先定义shell脚本的参数

NODE_ADDRESS=${1:-"192.168.1.7"}

1.生成kube-proxy配置

cat <<EOF >/opt/kubernetes/cfg/kube-proxy
KUBE_PROXY_OPTS="--logtostderr=true \
--v=4 \
--hostname-override=${NODE_ADDRESS} \
--kubeconfig=/opt/kubernetes/cfg/kube-proxy.kubeconfig"

EOF

2.生成kubelet服务配置

cat <<EOF >/usr/lib/systemd/system/kube-proxy.service
[Unit]
Description=Kubernetes Proxy
After=network.target

[Service]
EnvironmentFile=-/opt/kubernetes/cfg/kube-proxy
ExecStart=/opt/kubernetes/bin/kube-proxy \$KUBE_PROXY_OPTS
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

3.刷新配置并启动服务

systemctl daemon-reload
systemctl enable kube-proxy
systemctl restart kube-proxy

到现在我们的一个node节点部署完了,别的节点只要把程序和shell文件复制过去并修改nodeserver地址就可以了。

服务是启动起来了,不过我们还要到master节点去进行几步操作node节点才可以加入到k8s的集群中。

#查看node证书请求
./kubectl get csr
#同意node证书请求
./kubectl certificate approve node-csr-e5_4mL_u6G0Dzf6yKsmlMRiV9cxbNpkDH8jzrnGiH0k
#查看节点信息
./kubectl get nodes

集群

到现在我们的k8s的集群算是安装完成了,下一步我们来部署ui 通过介面的方式来管理我们的集群

<think>我们正在处理用户关于在Kubernetes节点上使用containerd作为容器运行时的部署指南的请求。用户要求一个指南或教程。根据提供的引用,我们可以整合以下步骤:引用[1]展示了使用nerdctl(containerd的CLI)操作容器的示例,但这不是部署指南的核心。引用[2]提供了从Docker切换到Containerd的实战步骤,包括配置镜像仓库和修改kubelet参数。引用[3]说明containerd已经内置了KubernetesCRI支持,因此不需要额外下载CRI插件。因此,我们将重点放在引用[2]和[3]上,构建一个部署指南。注意:用户要求的是node节点上的部署,所以我们假设已经有一个Kubernetes集群,并且要在节点上配置containerd。步骤大致包括:1.安装containerd2.配置containerd(包括镜像仓库等)3.配置kubelet使用containerd4.重启kubelet我们按照这些步骤来写指南。同时,根据系统指令,我们需要在回答中自然地添加引用标识,并在最后生成相关问题。</think>### Kubernetes Node 使用 Containerd 容器运行时部署指南 以下是基于 Kubernetes 官方文档和行业实践的详细部署流程: #### 1. **安装 Containerd** ```bash # 下载最新版 Containerd (示例版本号 1.7.2) wget https://github.com/containerd/containerd/releases/download/v1.7.2/containerd-1.7.2-linux-amd64.tar.gz # 解压到系统目录 sudo tar Cxzvf /usr/local containerd-1.7.2-linux-amd64.tar.gz # 生成 systemd 配置文件 sudo containerd config default | sudo tee /etc/containerd/config.toml # 启用并启动服务 sudo systemctl enable --now containerd ``` > **注**:Containerd 已内置 CRI 支持,无需额外安装插件[^3]。 #### 2. **配置 Containerd** ```bash # 修改镜像仓库配置 (以私有仓库为例) sudo mkdir -p /etc/containerd/certs.d/registry.example.com sudo tee /etc/containerd/certs.d/registry.example.com/hosts.toml <<EOF server = "https://registry.example.com" [host."https://registry.example.com"] capabilities = ["pull", "resolve"] skip_verify = true EOF # 启用 CRI 插件 (确保 config.toml 中存在) sudo sed -i 's/disabled_plugins = \["cri"\]/# disabled_plugins = ["cri"]/' /etc/containerd/config.toml # 重启服务 sudo systemctl restart containerd ``` #### 3. **配置 Kubelet** ```bash # 编辑 kubelet 参数文件 sudo vim /var/lib/kubelet/kubeadm-flags.env # 添加关键参数 KUBELET_KUBEADM_ARGS="--container-runtime-endpoint=unix:///run/containerd/containerd.sock --pod-infra-container-image=registry.example.com/pause:3.9" ``` > **重要**:`pod-infra-container-image` 必须指向集群可访问的 pause 镜像[^2]。 #### 4. **加载必要镜像** ```bash # 手动拉取 Kubernetes 基础镜像 sudo crictl pull registry.k8s.io/pause:3.9 sudo crictl pull registry.k8s.io/coredns/coredns:v1.10.1 ``` #### 5. **重启 Kubelet 服务** ```bash sudo systemctl daemon-reload sudo systemctl restart kubelet ``` #### 6. **验证运行时状态** ```bash # 检查节点状态 kubectl describe node <node-name> | grep ContainerRuntime # 测试容器运行 sudo crictl run hello-world ``` ### 关键配置说明 1. **镜像加速**:在 `config.toml` 的 `[plugins."io.containerd.grpc.v1.cri".registry.mirrors]` 节添加镜像加速源 2. **cgroup 驱动**:确保与 kubelet 一致(通常设置为 `systemd`) 3. **运行时类**:在 Pod 配置中使用 `runtimeClassName: containerd` > **故障排查提示**:若节点进入 `NotReady` 状态,检查 `/var/log/kubelet.log` 中是否包含 `"Container runtime network not ready"` 错误,通常需重载 CNI 配置[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值