K8S集群

配置yum源

[k8s]
name=k8s
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0

安装时可以指定版本

yum install kubelet-1.15.0

下载软件,安装(注意软件版本的一致性,所有节点都进行安装)
在这里插入图片描述

安装结果
在这里插入图片描述
关闭所有结点的交换分区
注释

#/dev/mapper/rhel-swap   swap                    swap    defaults        0 0

命令

swapoff -a

在这里插入图片描述
所有节点进行网络配置,同时设置服务启动服务

cat /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
sysctl --system

在这里插入图片描述
设置服务开机子启动

systemctl start  kubelet.service
systemctl enable kubelet.service
systemctl start docker.service
systemctl enable docker.service

所有节点加载镜像
在这里插入图片描述
配置kubelet

kubeadm init --pod-network-cidr=10.244.0.0/16  --apiserver-advertise-address=172.25.33.1

添加用户
创建kubeadm用户

useradd kubeadm
vim /etc/sudoers  

文件编辑内容如下:

kubeadm ALL=(ALL)       NOPASSWD: ALL

在kubeadm用户下配置kubectl

su - kubeadm
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown kubeadm:kubeadm $HOME/.kube/config

在这里插入图片描述
下载安装网络插件,运行其配置文件

kubectl apply -f kube-flannel.yml

node节点配置网关为master的IP
在这里插入图片描述
node节点加入集群

kubeadm join 172.25.33.1:6443 --token dctbt9.j8ef3ddnbc0kcr35     --discovery-token-ca-cert-hash sha256:571ee7a9dd40eab82c90de65233c68ef075e0fc634bfeda1c053570ab311d9f3

查看结果
在这里插入图片描述
在这里插入图片描述
加入dashboard界面,拉取镜像(所有节点)
在这里插入图片描述
运行配置文件

kubectl apply -f kubernetes-dashboard.yaml

可以使用delete以及create命令更新

修改节点类型

kubectl edit service kubernetes-dashboard -n kube-system

在这里插入图片描述
添加管理员

 kubectl apply -f dashboard-admin.yaml 


apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kube-system

获取管理员令牌

kubectl get secrets -n kube-system |grep admin
kubectl describe secrets admin-user-token-nk6dq -n kube-system 

在这里插入图片描述
登录
在这里插入图片描述

### k8s 集群部署、管理和故障排查 #### 一、k8s集群部署概述 在构建一个多Master节点的Kubernetes (k8s) 集群时,需要确保所有配置的一致性和稳定性。例如,在整个过程中应统一使用 `systemd` 作为容器和系统服务的 cgroup 驱动,这可以有效避免因使用 `cgroupfs` 而可能导致的资源管理不一致性问题[^2]。 此外,为了防止操作系统中的防火墙规则与 Kubernetes 的网络策略发生冲突,通常建议关闭系统的防火墙服务以及禁用 SELinux 设置。具体操作可以通过停止并禁用 `firewalld` 和 `iptables` 来实现[^3]: ```bash # 停止并禁用 firewalld systemctl stop firewalld && systemctl disable firewalld # 停止并禁用 iptables systemctl stop iptables && systemctl disable iptables # 禁用 SELinux setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config ``` 这些措施有助于减少潜在的安全隐患和性能瓶颈。 --- #### 二、k8s集群管理要点 完成基础环境准备之后,需验证集群的状态是否正常启动。通过执行命令 `kubectl get nodes` 可查看当前加入到集群中的节点状态;如果一切顺利,则会显示各节点处于 Ready 状态[^1]。 对于高可用架构下的多 Master 场景来说,还需要特别关注以下几个方面: - **负载均衡器设置**:为多个 API Server 提供外部访问入口。 - **Etcd 数据库同步健康状况**:确认 etcd 成员间通信无误且数据一致。 - **证书轮转机制启用情况**:保障长期运行期间安全性不受影响。 --- #### 三、常见故障及其排查方法 尽管遵循最佳实践能够降低错误发生的概率,但在实际运维中仍可能出现各种异常现象。以下是几种典型的场景及对应的解决方案: ##### 1. Pod调度失败 当某些 Pods 处于 Pending 状态较长时间未被分配至任何 Node 上时,可能是由于资源不足或者标签选择器匹配不当引起。此时可通过如下方式定位原因: - 查看事件日志:`kubectl describe pod <pod-name>` - 检查资源配额:`kubectl api-resources | grep quota` ##### 2. 容器无法拉取镜像 如果发现新创建的任务始终停留在 ImagePullBackOff 或 ErrImagePull 状态下,则很可能是目标仓库地址不可达或者是认证信息缺失所致。尝试重新指定正确的 imagePullPolicy 参数值,并核实 .dockerconfigjson 文件是否存在且内容合法。 ##### 3. 网络连通性障碍 跨主机间的 Pod 相互之间不能互相 ping 通的话,往往意味着 CNI 插件安装存在问题或是 MTU 参数调整不够合理。参照官方文档逐步校正插件版本号以及相关参数设定即可恢复功能正常使用。 --- ### 总结 综上所述,成功搭建一个稳定可靠的 K8S 集群不仅依赖前期细致入微的基础准备工作,同时也离不开后期持续有效的监控维护工作。只有做到两者兼顾才能真正意义上发挥出云原生技术带来的优势价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值