kubeadm init 后master一直处于notready状态

kubeadm安装Kubernetes,集群状态检测时,master一直处于notready状态

[root@master ~]# kubectl get nodes
NAME     STATUS     ROLES    AGE    VERSION
master   NotReady   master   32m    v1.16.0
node1    NotReady   <none>   8m2s   v1.16.0

找问题,先查看pods状态

[root@master ~]# kubectl get pods --all-namespaces
NAMESPACE     NAME                             READY   STATUS    RESTARTS   AGE
kube-system   coredns-58cc8c89f4-pkx82         0/1     Pending   0          34m
kube-system   coredns-58cc8c89f4-sddpq         0/1     Pending   0          34m
kube-system   etcd-master                      1/1     Running   0          34m
kube-system   kube-apiserver-master            1/1     Running   0          34m
kube-system   kube-controller-manager-master   1/1     Running   0          33m
kube-system   kube-proxy-4fj8z                 1/1     Running   0          10m
kube-system   kube-proxy-v54nh                 1/1     Running   0          34m
kube-system   kube-scheduler-master            1/1     Running   0          34m

发现coredns一直处于pending状态,再进一步看kuberctl.services日志

[root@master ~]# journalctl -f -u kubelet.service
-- Logs begin at Mon 2019-09-23 22:55:58 CST. --
Sep 24 01:33:44 master kubelet[6213]: E0924 01:33:44.107180    6213 kubelet.go:2187] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network pl
<think>好的,用户现在问的是如何在Kubernetes(k8s)中建立master节点。根据之前的对话历史,用户之前遇到了无法找到kubelet、kubeadm和kubectl的问题,现在可能已经解决了安装问题,现在想要继续搭建集群的master节点。需要先确认用户的环境是否已经正确安装了这些工具,否则可能需要先指导他们完成安装步骤。 首先,用户可能是在尝试初始化一个Kubernetes集群,所以需要详细说明如何使用kubeadm来初始化master节点。步骤可能包括安装容器运行时、初始化集群、配置kubectl以及安装网络插件等。需要注意的是,用户可能对某些步骤不熟悉,比如如何选择容器运行时,或者如何处理初始化过程中可能出现的错误。 还要考虑用户的操作系统环境,比如Ubuntu或CentOS,不同的系统可能在命令或配置上有差异。之前的回答中用户使用的是apt,可能是在Ubuntu/Debian系统上,所以在指导时需要保持一致性。 另外,用户可能需要一些后续步骤,比如如何加入worker节点,或者如何排查初始化中的常见问题,比如镜像拉取失败、端口占用等。需要涵盖这些内容,帮助用户顺利完成master节点的搭建。 需要提醒用户注意版本兼容性,比如kubeadm、kubelet和kubectl的版本需要一致,以及容器运行时(如Docker或containerd)的兼容性。同时,防火墙设置和网络插件的选择也是常见的问题点,需要详细说明。 最后,用户可能对命令中的参数不太理解,比如--pod-network-cidr的作用,需要解释清楚。此外,提供验证集群状态的命令和如何保存加入集群的命令(如kubeadm join)也很重要。在</think> Kubernetes 中,**建立 Master 节点(控制平面)**的核心步骤是使用 `kubeadm init` 初始化集群。以下是详细操作流程: --- ### **一、准备工作** #### 1. **环境要求** - **操作系统**:Ubuntu/CentOS 等主流 Linux 系统(需禁用 Swap 和 SELinux)。 - **硬件**:至少 2GB 内存,2 核 CPU。 - **网络**:节点间互通,开放所需端口(如 6443、2379-2380 等)。 #### 2. **安装依赖工具** 确保已安装以下组件(参考[前一问题](https://github.com/用户/问题链接)): - **容器运行时**(如 Docker、containerd): ```bash # 安装 Docker sudo apt-get install -y docker.io sudo systemctl enable --now docker # 或安装 containerd sudo apt-get install -y containerd sudo systemctl enable --now containerd ``` - **kubeadm、kubelet、kubectl**: ```bash sudo apt-get install -y kubelet kubeadm kubectl sudo systemctl enable kubelet # 不启动,需 kubeadm init 后自动激活 ``` --- ### **二、初始化 Master 节点** #### 1. **执行初始化命令** ```bash sudo kubeadm init \ --apiserver-advertise-address=<Master节点IP> \ # 指定 Master 的 IP(如 192.168.1.100) --pod-network-cidr=<Pod网络CIDR> \ # 指定 Pod 网段(需与后续网络插件匹配) --image-repository=registry.aliyuncs.com/google_containers # 使用阿里云镜像加速 ``` ##### **关键参数说明** - `--pod-network-cidr`:根据网络插件选择: - **Calico**:`--pod-network-cidr=192.168.0.0/16` - **Flannel**:`--pod-network-cidr=10.244.0.0/16` - 如果使用代理或私有仓库,需额外配置 `--image-repository` 或 `--config` 文件。 #### 2. **记录关键信息** 初始化完成后会输出以下内容,**务必保存**: ```bash Your Kubernetes control-plane has initialized successfully! To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config # 节点加入命令(用于 Worker 加入集群) kubeadm join <Master-IP>:6443 --token <token> --discovery-token-ca-cert-hash <hash> ``` --- ### **三、配置 kubectl** 执行初始化时提示的命令,使当前用户能访问集群: ```bash mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 验证集群状态: ```bash kubectl get nodes # 应看到 Master 节点状态为 `NotReady`(尚未安装网络插件) ``` --- ### **四、安装网络插件(CNI)** 选择一种网络插件(以 Calico 为例): ```bash # 安装 Calico kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yaml # 等待 Pod 就绪 kubectl get pods -n kube-system -w ``` 等待所有 Pod 状态变为 `Running` 后,Master 节点状态将变为 `Ready`。 --- ### **五、允许 Master 节点调度 Pod(可选)** 默认 Master 节点不运行用户 Pod,如需解除限制: ```bash kubectl taint nodes --all node-role.kubernetes.io/control-plane- ``` --- ### **六、验证 Master 节点** ```bash kubectl get nodes # 查看节点状态 kubectl get pods -A # 查看所有 Pod kubectl cluster-info # 查看集群信息 ``` --- ### **常见问题排查** #### 1. **初始化卡住或失败** - **镜像拉取失败**:检查镜像仓库配置,使用 `kubeadm config images pull` 预拉取镜像。 - **端口冲突**:确保 6443、2379-2380 等端口未被占用。 - **防火墙限制**:关闭防火墙或放行端口: ```bash sudo ufw disable # Ubuntu sudo systemctl stop firewalld # CentOS ``` #### 2. **kubectl 无法连接 API Server** - 检查 `$HOME/.kube/config` 文件权限和内容。 - 确认 Master 节点的 IP 和端口可达。 --- ### **后续步骤** 1. **添加 Worker 节点**:在 Worker 节点执行 `kubeadm join` 命令。 2. **部署应用**:使用 `kubectl apply` 部署测试应用(如 Nginx)。 3. **安装 Dashboard**(可选): ```bash kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml ``` 通过以上步骤,即可成功建立 Kubernetes Master 节点并准备就绪!
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值