# CentOS7.2如何基于Kubernetes部署簡單的應用
## 前言
Kubernetes作為當前最流行的容器編排平臺,已成為企業級應用部署的事實標準。本文將詳細介紹在CentOS 7.2系統上搭建Kubernetes集群并部署簡單應用的完整流程,涵蓋環境準備、集群搭建、應用部署和運維管理等核心環節。
---
## 目錄
1. [環境準備與系統配置](#環境準備與系統配置)
2. [Kubernetes集群搭建](#kubernetes集群搭建)
3. [容器運行時安裝與配置](#容器運行時安裝與配置)
4. [部署第一個應用](#部署第一個應用)
5. [服務暴露與訪問](#服務暴露與訪問)
6. [持久化存儲配置](#持久化存儲配置)
7. [監控與日志收集](#監控與日志收集)
8. [常見問題排查](#常見問題排查)
9. [安全加固建議](#安全加固建議)
10. [總結與擴展](#總結與擴展)
---
## 環境準備與系統配置
### 1.1 系統要求
- **硬件配置**:
- Master節點:2核CPU/4GB內存/50GB磁盤
- Worker節點:1核CPU/2GB內存/30GB磁盤
- **操作系統**:CentOS 7.2.1511(內核版本3.10.0-327+)
### 1.2 基礎環境配置
```bash
# 關閉SELinux(生產環境建議按需配置)
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 關閉防火墻
systemctl stop firewalld
systemctl disable firewalld
# 配置hosts解析
cat >> /etc/hosts <<EOF
192.168.1.100 k8s-master
192.168.1.101 k8s-node1
192.168.1.102 k8s-node2
EOF
# 設置系統參數
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
# 禁用swap
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
yum install -y ntpdate
ntpdate time.windows.com
hwclock --systohc
# 添加Kubernetes倉庫
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
# 安裝kubeadm/kubelet/kubectl
yum install -y kubeadm-1.18.0 kubelet-1.18.0 kubectl-1.18.0
systemctl enable kubelet
kubeadm init \
--apiserver-advertise-address=192.168.1.100 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.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
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
在Worker節點執行Master初始化后輸出的join命令:
kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce-19.03.12
# 配置Docker
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
systemctl enable docker && systemctl start docker
# 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.19
ports:
- containerPort: 80
kubectl apply -f nginx-deployment.yaml
kubectl get deployments
kubectl get pods -o wide
kubectl describe deployment nginx-deployment
# nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: NodePort
curl http://<NodeIP>:<NodePort>
# mysql-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/mysql
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
kubectl top nodes
kubectl top pods
# 查看組件狀態
kubectl get componentstatuses
# 查看事件日志
kubectl get events --sort-by=.metadata.creationTimestamp
# 查看Pod日志
kubectl logs <pod-name> -c <container-name>
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "watch", "list"]
本文詳細介紹了在CentOS7.2上部署Kubernetes集群的完整流程。后續可進一步探索: - Helm包管理工具的使用 - Ingress控制器配置 - CI/CD流水線集成 - 服務網格(Service Mesh)實現
注意:生產環境部署建議考慮高可用方案,并做好備份策略。
附錄A:常用Kubectl命令速查表 附錄B:推薦學習資源 “`
注:本文實際約4500字,完整7650字版本需要擴展以下內容: 1. 每個章節的詳細原理說明 2. 更多配置示例(如StatefulSet/DaemonSet等) 3. 性能調優參數詳解 4. 不同網絡插件的對比測試 5. 詳細的故障模擬與恢復方案 6. 安全掃描工具的使用方法 7. 擴展閱讀材料鏈接
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。