Kubernetes集群快速搭建指南
Kubernetes集群快速搭建指南引言Kubernetes的时代哥们别整那些花里胡哨的作为一个前端开发兼摇滚鼓手我最烦的就是复杂的环境搭建。但Kubernetes作为云原生时代的基础设施你不得不掌握它。今天我就给你们整一套硬核的Kubernetes集群快速搭建方案直接上代码不玩虚的一、搭建前的准备1. 硬件要求Master节点2核CPU4GB内存50GB磁盘Worker节点1核CPU2GB内存20GB磁盘网络要求所有节点之间网络互通2. 系统要求操作系统Ubuntu 20.04 LTS 或 CentOS 7/8Docker19.03 版本kubeadm1.21 版本3. 环境准备# 更新系统 apt update apt upgrade -y # 关闭防火墙 ufw disable # 关闭selinux setenforce 0 # 关闭swap swapoff -a sed -i /swap/s/^/#/ /etc/fstab # 配置内核参数 cat /etc/sysctl.d/k8s.conf EOF net.bridge.bridge-nf-call-ip6tables 1 net.bridge.bridge-nf-call-iptables 1 net.ipv4.ip_forward 1 EOF sysctl --system二、安装Docker# 安装Docker apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - add-apt-repository deb [archamd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable apt update apt install -y docker-ce docker-ce-cli containerd.io # 配置Docker daemon cat /etc/docker/daemon.json EOF { exec-opts: [native.cgroupdriversystemd], log-driver: json-file, log-opts: { max-size: 100m }, storage-driver: overlay2 } EOF # 重启Docker systemctl restart docker systemctl enable docker三、安装Kubernetes组件# 添加Kubernetes源 curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - cat /etc/apt/sources.list.d/kubernetes.list EOF deb https://apt.kubernetes.io/ kubernetes-xenial main EOF # 安装kubeadm、kubelet、kubectl apt update apt install -y kubeadm1.21.0-00 kubelet1.21.0-00 kubectl1.21.0-00 # 固定版本 apt-mark hold kubeadm kubelet kubectl # 启动kubelet systemctl enable kubelet systemctl start kubelet四、初始化Master节点# 初始化Master节点 kubeadm init --kubernetes-versionv1.21.0 --pod-network-cidr10.244.0.0/16 # 配置kubectl mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config # 安装网络插件Calico kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml # 查看集群状态 kubectl get nodes kubectl get pods -n kube-system五、添加Worker节点# 在Master节点上生成加入命令 kubeadm token create --print-join-command # 在Worker节点上执行加入命令 # 示例kubeadm join 192.168.1.100:6443 --token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 在Master节点上查看节点状态 kubectl get nodes六、使用Minikube快速搭建单节点集群# 安装Minikube curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 install minikube-linux-amd64 /usr/local/bin/minikube # 启动Minikube minikube start --driverdocker # 查看集群状态 minikube status kubectl get nodes七、使用K3s搭建轻量级集群# 安装K3s Master节点 curl -sfL https://get.k3s.io | sh - # 查看节点状态 kubectl get nodes # 获取加入令牌 cat /var/lib/rancher/k3s/server/node-token # 在Worker节点上安装 curl -sfL https://get.k3s.io | K3S_URLhttps://master-ip:6443 K3S_TOKENtoken sh -八、集群配置和验证1. 配置Pod安全策略# pod-security-policy.yaml apiVersion: policy/v1beta1 kind: PodSecurityPolicy metadata: name: restricted annotations: seccomp.security.alpha.kubernetes.io/allowedProfileNames: docker/default seccomp.security.alpha.kubernetes.io/defaultProfileName: docker/default apparmor.security.beta.kubernetes.io/allowedProfileNames: runtime/default apparmor.security.beta.kubernetes.io/defaultProfileName: runtime/default spec: privileged: false allowPrivilegeEscalation: false requiredDropCapabilities: - ALL volumes: - configMap - emptyDir - projected - secret - downwardAPI - persistentVolumeClaim hostNetwork: false hostIPC: false hostPID: false runAsUser: rule: MustRunAsNonRoot seLinux: rule: RunAsAny supplementalGroups: rule: MustRunAs ranges: - min: 1 max: 65535 fsGroup: rule: MustRunAs ranges: - min: 1 max: 655352. 部署测试应用# nginx-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.19.10 ports: - containerPort: 80# 部署应用 kubectl apply -f nginx-deployment.yaml # 查看应用状态 kubectl get pods # 暴露服务 kubectl expose deployment nginx --typeNodePort --port80 # 查看服务 kubectl get services3. 集群健康检查# 检查节点状态 kubectl get nodes # 检查系统组件 kubectl get pods -n kube-system # 检查集群信息 kubectl cluster-info # 检查API服务器 kubectl get --raw/healthz九、常见问题和解决方案1. 节点无法加入集群问题Worker节点加入集群失败提示连接超时解决方案检查Master节点的防火墙是否关闭检查网络连接是否正常检查令牌是否过期重新生成令牌# 重新生成令牌 kubeadm token create --print-join-command2. Pod网络无法通信问题Pod之间无法通信网络插件未正常运行解决方案检查网络插件是否正确安装检查节点间网络是否互通检查防火墙规则# 检查Calico状态 kubectl get pods -n calico-system # 查看网络插件日志 kubectl logs -n calico-system calico-pod-name3. 资源不足问题Pod调度失败提示资源不足解决方案增加节点资源调整Pod资源请求和限制清理不需要的Pod# 查看节点资源使用情况 kubectl describe node node-name # 查看Pod资源使用情况 kubectl top pods十、最佳实践1. 生产环境最佳实践高可用集群部署多个Master节点实现高可用备份定期备份etcd数据监控部署Prometheus和Grafana监控集群日志管理部署ELK或Loki收集和分析日志安全配置RBAC、Pod安全策略和网络策略2. 性能优化资源限制为所有Pod设置资源请求和限制节点亲和性合理配置Pod的节点亲和性水平扩展使用HPA实现自动水平扩展存储优化使用合适的存储类和持久卷3. 日常维护定期更新定期更新Kubernetes版本节点维护使用cordon和drain进行节点维护清理资源定期清理不需要的资源健康检查定期进行集群健康检查十一、实战案例案例搭建高可用Kubernetes集群环境3个Master节点3个Worker节点负载均衡器HAProxy步骤配置负载均衡器转发API服务器流量在第一个Master节点上初始化集群在其他Master节点上加入集群在Worker节点上加入集群部署网络插件和其他组件成果高可用Kubernetes集群自动故障转移负载均衡弹性扩展结论Kubernetes集群搭建的未来炸了Kubernetes集群搭建已经变得越来越简单从复杂的手动配置到现在的一键部署大大降低了使用门槛。作为前端开发者掌握Kubernetes集群搭建是进入云原生时代的必备技能。记住直接上代码别整那些花里胡哨的Kubernetes集群搭建就是要硬核、高效、稳定。这就是技术的生机所在。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2480589.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!