1. 首页 > Linux教程 > 正文

Linux教程FG364-容器编排Kubernetes生产部署

内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。

本文档风哥主要介绍Kubernetes生产环境的部署方法,包括集群规划、安装配置、应用部署等内容。

Part01-基础概念与理论知识

1.1 Kubernetes架构

# Master节点组件
kube-apiserver:API服务器
kube-controller-manager:控制器管理器
kube-scheduler:调度器
etcd:键值存储

# Worker节点组件
kubelet:节点代理
kube-proxy:网络代理
Container Runtime:容器运行时

Part02-生产环境规划与建议

2.1 集群规划

# 最小集群
3个Master节点(高可用)
3个Worker节点

# 生产集群
3个Master节点(负载均衡)
多个Worker节点(按需扩展)
独立的etcd集群(可选)

Part03-生产环境项目实施方案

3.1 使用kubeadm部署

# 安装必要软件
$ sudo dnf install kubeadm kubelet kubectl -y

# 初始化Master节点
$ sudo kubeadm init –pod-network-cidr=10.244.0.0/16

# 配置kubectl
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 安装网络插件
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

# Worker节点加入集群
$ sudo kubeadm join 192.168.1.10:6443 –token abc123.def456 \
–discovery-token-ca-cert-hash sha256:xxx

# 查看集群状态
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 10m v1.28.0
node1 Ready 5m v1.28.0
node2 Ready 5m v1.28.0

3.2 部署应用

# 创建Deployment
$ kubectl create deployment nginx –image=nginx
deployment.apps/nginx created

# 扩展副本
$ kubectl scale deployment nginx –replicas=3
deployment.apps/nginx scaled

# 创建Service
$ kubectl expose deployment nginx –port=80 –target-port=80 –type=NodePort
service/nginx exposed

# 查看应用状态
$ kubectl get pods,svc
NAME READY STATUS RESTARTS AGE
pod/nginx-6799fc88d8-abc12 1/1 Running 0 1m
pod/nginx-6799fc88d8-def34 1/1 Running 0 1m
pod/nginx-6799fc88d8-ghi56 1/1 Running 0 1m

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 443/TCP 10m
service/nginx NodePort 10.96.100.100 80:30080/TCP 30s

Part04-生产案例与实战讲解

4.1 案例:Web应用部署

# 场景:部署Web应用到Kubernetes

# 1. 创建命名空间
$ kubectl create namespace webapp

# 2. 创建Deployment
$ cat > webapp-deployment.yaml << 'EOF' apiVersion: apps/v1 kind: Deployment metadata: name: webapp namespace: webapp spec: replicas: 3 selector: matchLabels: app: webapp template: metadata: labels: app: webapp spec: containers: - name: webapp image: nginx:latest ports: - containerPort: 80 EOF $ kubectl apply -f webapp-deployment.yaml # 3. 创建Service $ cat > webapp-service.yaml << 'EOF' apiVersion: v1 kind: Service metadata: name: webapp namespace: webapp spec: selector: app: webapp ports: - port: 80 targetPort: 80 type: LoadBalancer EOF $ kubectl apply -f webapp-service.yaml # 4. 验证部署 $ kubectl get all -n webapp

风哥提示:

Part05-风哥经验总结与分享

Kubernetes是容器编排的标准平台,生产部署要充分考虑高可用、网络、存储等方面。建议使用kubeadm或kops等工具简化部署过程。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息