【ubutnu24.04】k8s部署2:摸索修复问题

  • 1.30.0 一直init失败
  • 有人说版本兼容问题
  • 重新安装了最新的1.31.0 版本
  • kubeadm init 仍旧失败。

安装依赖项

sudo apt-get install -y apt-transport-https ca-certificates curl gpg

root@PerfSvr:/home/zhangbin/perfwork/k8sadmin# sudo apt-get install -y apt-transport-https ca-certificates curl gpg
正在读取软件包列表... 完成
正在分析软件包的依赖关系树.
在 Ubuntu 24.04 上安装和部署 Kubernetesk8s)需要遵循一系列步骤,以确保系统环境的正确配置和组件的顺利安装。以下是基于最佳实践整理出的完整指南。 ### 一、环境准备 #### 1. 系统初始化 - 更新系统软件包: ```bash sudo apt update && sudo apt upgrade -y ``` - 安装必要的依赖项: ```bash sudo apt install -y curl gnupg2 software-properties-common ``` #### 2. 安装容器运行时(containerd) - 添加 Docker 的官方 GPG 密钥并设置仓库: ```bash curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` - 更新 APT 包索引并安装 containerd: ```bash sudo apt update && sudo apt install -y containerd.io ``` - 配置 containerd: ```bash sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml ``` - 重启 containerd 服务: ```bash sudo systemctl restart containerd ``` #### 3. 安装 Kubernetes 组件(kubeadm, kubelet, kubectl) - 添加 Kubernetes 的官方 GPG 密钥并设置仓库: ```bash curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main" ``` - 安装 Kubernetes 组件: ```bash sudo apt update && sudo apt install -y kubelet kubeadm kubectl ``` - 锁定版本以防止意外升级: ```bash sudo apt-mark hold kubelet kubeadm kubectl ``` ### 二、部署 Kubernetes 集群 #### 1. 初始化主节点 - 使用 `kubeadm init` 命令初始化主节点,该命令会自动检测网络插件,并生成一个用于加入其他节点的 token: ```bash sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` - 按照输出提示设置用户权限: ```bash mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` #### 2. 添加工作节点 - 在每个工作节点上执行以下命令来加入集群(具体命令由主节点初始化时输出提供): ```bash sudo kubeadm join <control-plane-ip>:<port> --token <token> --discovery-token-ca-cert-hash sha256:<hash> ``` #### 3. 验证集群状态 - 查看节点状态: ```bash kubectl get nodes ``` - 查看所有命名空间下的 Pod 状态: ```bash kubectl get pods --all-namespaces ``` ### 三、部署应用示例 #### 1. 创建 Deployment - 创建一个简单的 Nginx Deployment: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80 ``` - 应用配置文件: ```bash kubectl apply -f nginx-deployment.yaml ``` #### 2. 创建 Service - 创建一个 ClusterIP 类型的服务来暴露 Deployment: ```yaml apiVersion: v1 kind: Service metadata: name: nginx-service spec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80 ``` - 应用配置文件: ```bash kubectl apply -f nginx-service.yaml ``` #### 3. 部署应用 - 验证 Deployment 和 Service 是否成功创建: ```bash kubectl get deployments kubectl get services ``` ### 四、运维管理 #### 1. 资源监控 - 可以使用 Prometheus 和 Grafana 来监控 Kubernetes 集群中的资源使用情况。 - 安装 Prometheus Operator: ```bash helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update helm install prometheus prometheus-community/kube-prometheus-stack ``` #### 2. 日志管理 - 使用 Fluentd 或 Logstash 收集日志,并通过 Elasticsearch 存储和搜索日志数据。 - 安装 EFK 堆栈: ```bash helm repo add elastic https://helm.elastic.co helm repo update helm install elasticsearch elastic/elasticsearch helm install kibana elastic/kibana helm install fluentd fluent/fluentd ``` #### 3. 自动扩缩容 - 使用 Horizontal Pod Autoscaler (HPA) 根据 CPU 使用率自动调整 Pod 数量: ```bash kubectl autoscale deployment nginx-deployment --cpu-percent=50 --min=1 --max=10 ``` ### 五、生产级最佳实践 #### 1. 高可用控制平面 - 部署多个主节点以实现高可用性,并使用负载均衡器分发请求。 - 使用 Keepalived 或 HAProxy 设置虚拟 IP 地址。 #### 2. 持久化存储 - 使用 Persistent Volumes (PV) 和 Persistent Volume Claims (PVC) 提供持久化存储。 - 配置 StorageClass 以便动态分配存储卷。 #### 3. 安全加固 - 启用 RBAC 并限制用户的访问权限。 - 使用 Network Policies 控制 Pod 之间的通信。 ### 六、备份与灾难恢复 #### 1. 备份 etcd 数据 - 定期备份 etcd 数据库以防止数据丢失: ```bash ETCDCTL_API=3 etcdctl --endpoints=https://[ETCD_IP]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key snapshot save /opt/snapshot-pre-boot.db ``` #### 2. 恢复 etcd 数据 - 如果发生故障,可以从快照恢复 etcd 数据: ```bash ETCDCTL_API=3 etcdctl snapshot restore /opt/snapshot-pre-boot.db --data-dir /var/lib/etcd-backup sudo mv /var/lib/etcd /var/lib/etcd-old sudo mv /var/lib/etcd-backup /var/lib/etcd sudo chown -R etcd:etcd /var/lib/etcd sudo systemctl start etcd ``` ### 七、常见问题排查 #### 1. Pod 处于 Pending 状态 - 检查节点资源是否充足,或者查看是否有调度策略阻止了 Pod 的调度。 #### 2. 服务无法访问 - 确认服务类型是否正确(如 NodePort 或 LoadBalancer),并且检查防火墙规则是否允许流量通过。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等风来不如迎风去

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值