k8s如何在centos上部署应用
导读:在 CentOS 上部署应用到 Kubernetes 的实操指南 一 环境准备与前置条件 系统建议:CentOS 7/8,至少2 核 CPU、2 GB 内存、可外网访问。 主机名与解析:为各节点设置主机名(如 master、node1),...
在 CentOS 上部署应用到 Kubernetes 的实操指南
一 环境准备与前置条件
- 系统建议:CentOS 7/8,至少2 核 CPU、2 GB 内存、可外网访问。
- 主机名与解析:为各节点设置主机名(如 master、node1),并在 /etc/hosts 配置解析。
- 时间同步:安装并启用 NTP,例如:
sudo yum install -y ntpdate & & sudo ntpdate ntp.aliyun.com。 - 关闭 Swap:
sudo swapoff -a,并在 /etc/fstab 注释 swap 行。 - 内核与转发:启用桥接与转发
sudo modprobe br_netfilterecho 'net.bridge.bridge-nf-call-iptables=1' | sudo tee -a /etc/sysctl.confecho 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.confsudo sysctl -p
- 防火墙与 SELinux(测试环境常用做法):
sudo systemctl stop firewalld & & sudo systemctl disable firewalldsudo setenforce 0 & & sudo sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
- 容器运行时:安装 Docker CE(或 containerd),并配置 cgroup driver=systemd。
二 安装容器运行时与 Kubernetes 组件
- 安装 Docker(示例为国内镜像源):
sudo yum install -y yum-utils device-mapper-persistent-data lvm2sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposudo yum install -y docker-ce docker-ce-cli containerd.iosudo systemctl enable --now docker
- 配置 Docker 使用 systemd cgroup:
sudo mkdir -p /etc/dockerecho '{ "exec-opts":["native.cgroupdriver=systemd"]} ' | sudo tee /etc/docker/daemon.jsonsudo systemctl restart docker
- 安装 kubeadm、kubelet、kubectl(k8s 官方源):
cat < < EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOFsudo yum install -y kubelet kubeadm kubectlsudo systemctl enable --now kubelet
三 初始化 Master 节点并加入 Node
- 初始化控制平面(将 <
Master_IP>
替换为你的主节点 IP):
sudo kubeadm init --apiserver-advertise-address=< Master_IP> --pod-network-cidr=10.244.0.0/16
- 配置 kubectl:
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
- 安装 Pod 网络插件(Flannel):
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
- 加入 Worker 节点(在 Master 初始化成功后输出的命令中复制执行):
sudo kubeadm join < Master_IP> :6443 --token < token> --discovery-token-ca-cert-hash < hash>
- 验证集群状态:
kubectl get nodeskubectl get pods -A
四 部署示例应用 Nginx
- 方式一 使用 Deployment 与 Service(推荐):
- 创建文件 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:latest ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: nginx spec: type: NodePort selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80 nodePort: 30080 - 部署与验证:
kubectl apply -f nginx-deployment.yamlkubectl get deploy,svc,pods- 访问:浏览器打开 http://< 任意节点IP> :30080
- 创建文件 nginx-deployment.yaml:
- 方式二 一条命令快速创建(适合测试):
kubectl create deployment nginx --image=nginxkubectl expose deployment nginx --port=80 --type=NodePortkubectl get svc nginx查看分配的 NodePort 后访问。
五 常见问题与排查要点
- cgroup 驱动不一致导致 kubelet 异常:确保 Docker 使用 systemd 驱动(见上文 Docker 配置)。
- 节点 NotReady:检查 Flannel 是否就绪(
kubectl get pods -n kube-flannel),以及节点网络与路由。 - kubeadm join 失败:Token 默认 24 小时 有效,过期可在 Master 上执行
kubeadm token create --print-join-command重新生成。 - 镜像拉取慢或失败:可使用国内镜像仓库或提前
kubeadm config images pull拉取所需镜像。 - 需要外网访问:Service 使用 NodePort 或 LoadBalancer;云上优先 LoadBalancer,裸机可结合 MetalLB。
- 安全建议(生产环境):不要长期关闭 firewalld/SELinux,按需放行端口(如 6443、10250、30080 等),并启用 RBAC、镜像签名与审计。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: k8s如何在centos上部署应用
本文地址: https://pptw.com/jishu/752154.html
