引言
随着云计算和容器技术的快速发展,Kubernetes(K8s)已成为云原生时代的核心引擎。本文将为您详细介绍如何在CentOS上轻松上手Kubernetes,并实战容器编排,开启高效运维之旅。
环境准备
1. 系统要求
- 操作系统:CentOS 7
- 硬件要求:2核CPU,4GB内存
- 网络要求:公网IP或者内网访问
2. 系统配置
- 更新系统:
sudo yum update -y
- 安装Docker:
sudo yum install -y docker
- 启动Docker服务:
sudo systemctl start docker
- 设置Docker开机自启:
sudo systemctl enable docker
Kubernetes集群搭建
1. 安装kubeadm、kubelet和kubectl
- 安装kubeadm:
sudo yum install -y kubeadm
- 安装kubelet:
sudo yum install -y kubelet
- 安装kubectl:
sudo yum install -y kubectl
2. 初始化集群
- 设置集群名称:
export CLUSTER_NAME=myk8s
- 初始化集群:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
- 将kubeconfig文件添加到当前用户:
sudo cp /etc/kubernetes/admin.conf ~/$USER/.kube/config
3. 安装网络插件
- 安装Flannel网络插件:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
容器编排实战
1. 部署Nginx服务
创建Nginx部署文件:`cat <
nginx-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx
spec: containers:
- name: nginx image: nginx:1.17.1 ports: - containerPort: 80
EOF`
部署Nginx服务:
kubectl apply -f nginx-deployment.yaml
2. 部署MySQL服务
创建MySQL部署文件:`cat <
mysql-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: mysql-deployment spec: replicas: 1 selector: matchLabels: app: mysql template: metadata: labels: app: mysql
spec: containers:
- name: mysql image: mysql:5.7 ports: - containerPort: 3306
EOF`
部署MySQL服务:
kubectl apply -f mysql-deployment.yaml
3. 部署Ingress控制器
创建Ingress控制器部署文件:`cat <
ingress-nginx-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: ingress-nginx spec: replicas: 2 selector: matchLabels: app: ingress-nginx template: metadata: labels: app: ingress-nginx
spec: containers:
- name: nginx image: nginx-ingress-controller:0.27.0 ports: - containerPort: 80
EOF`
部署Ingress控制器:
kubectl apply -f ingress-nginx-deployment.yaml
4. 配置Ingress规则
创建Ingress规则文件:`cat <
ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nginx-ingress spec: rules: - host: nginx.example.com
http:
paths:
- path: / pathType: Prefix backend: service: name: nginx-deployment port: number: 80 EOF`
- host: nginx.example.com
http:
paths:
应用Ingress规则:
kubectl apply -f ingress.yaml
总结
本文详细介绍了在CentOS上轻松上手Kubernetes,并实战容器编排的过程。通过本文的学习,您可以开启云原生时代高效运维之旅,为您的企业构建稳定、可靠的容器化应用。