k8s在centos上的容器化应用如何部署
导读:在CentOS上部署Kubernetes(k8s)容器化应用的完整流程 1. 环境准备 操作系统:确保使用CentOS 7.9及以上版本(推荐CentOS Stream 8/9)。 硬件要求:每台节点(Master/Worker)至少4G...
在CentOS上部署Kubernetes(k8s)容器化应用的完整流程
1. 环境准备
- 操作系统:确保使用CentOS 7.9及以上版本(推荐CentOS Stream 8/9)。
- 硬件要求:每台节点(Master/Worker)至少4GB内存、20GB可用存储,且CPU支持虚拟化。
- 网络要求:所有节点之间网络互通(无防火墙阻隔),且具备外网访问权限(用于拉取镜像)。
- 基础配置:
- 关闭防火墙:
sudo systemctl stop firewalld & & sudo systemctl disable firewalld
; - 关闭SELinux:
sudo setenforce 0
,并修改配置文件/etc/selinux/config
中的SELINUX=disabled
; - 禁用交换分区:
sudo swapoff -a
,并注释/etc/fstab
中的swap行; - 设置主机名(如
k8s-master
、k8s-worker1
)并通过/etc/hosts
文件配置节点间域名解析。
- 关闭防火墙:
2. 安装Docker(容器运行时)
Kubernetes依赖Docker作为容器运行时(也可选择containerd,但Docker更常用)。
- 安装必要工具:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 net-tools
; - 添加Docker软件源:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
; - 安装Docker CE:
sudo yum install -y docker-ce docker-ce-cli containerd.io
; - 启动Docker并设置开机自启:
sudo systemctl start docker & & sudo systemctl enable docker
; - 验证安装:
docker --version
(应输出Docker版本信息)。
3. 安装Kubernetes组件(kubelet、kubeadm、kubectl)
- 配置Kubernetes软件源:创建
/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
- 安装组件:
sudo yum install -y kubelet kubeadm kubectl
; - 启动kubelet并设置开机自启:
sudo systemctl enable kubelet & & sudo systemctl start kubelet
。
4. 初始化Master节点
- 在Master节点上执行初始化命令(以CentOS 7为例,需指定镜像仓库和Pod网络CIDR):
(注:sudo kubeadm init --apiserver-advertise-address=< Master-IP> \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.22.15 \ --service-cidr 10.96.0.0/12 \ --pod-network-cidr 10.244.0.0/16 \ --ignore-preflight-errors=all
< Master-IP>
替换为Master节点的实际IP;--ignore-preflight-errors=all
用于忽略部分兼容性问题,生产环境需谨慎使用。) - 初始化完成后,Master节点会输出加入Worker节点的命令(如
kubeadm join ...
),需妥善保存。
5. 配置kubectl(Master节点)
- 创建.kube目录:
mkdir -p $HOME/.kube
; - 复制Admin配置文件:
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
; - 修改配置文件权限:
sudo chown $(id -u):$(id -g) $HOME/.kube/config
; - 验证配置:
kubectl version --client
(应显示客户端版本,且无报错)。
6. 安装网络插件(Master节点)
Kubernetes需要网络插件实现Pod间通信,常用Flannel(轻量级)或Calico(功能丰富)。
- 以Flannel为例,执行以下命令:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
- 验证网络插件状态:
kubectl get pods -n kube-system
(所有Pod应处于Running
状态)。
7. 加入Worker节点
- 在Worker节点上执行Master节点初始化时输出的加入命令(如):
sudo kubeadm join 192.168.1.100:6443 \ --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
- 加入完成后,Worker节点会自动连接到Master节点。
8. 验证集群状态(Master节点)
- 查看节点状态:
kubectl get nodes
(所有节点应显示为Ready
); - 查看Pod状态:
kubectl get pods --all-namespaces
(所有Pod应处于Running
状态)。
9. 部署容器化应用(以Nginx为例)
-
方式1:使用YAML文件部署(推荐)
- 创建Deployment配置文件
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 # 容器端口
- 创建Service配置文件
nginx-service.yaml
(暴露服务):apiVersion: v1 kind: Service metadata: name: nginx-service spec: selector: app: nginx ports: - protocol: TCP port: 80 # Service端口 targetPort: 80 # Pod端口 type: NodePort # 类型(NodePort允许外部访问)
- 部署应用:
kubectl apply -f nginx-deployment.yaml kubectl apply -f nginx-service.yaml
- 创建Deployment配置文件
-
方式2:使用kubectl命令快速部署(测试用)
kubectl create deployment nginx --image=nginx --replicas=3 kubectl expose deployment nginx --port=80 --type=NodePort
-
验证部署:
- 查看Pod状态:
kubectl get pods
(应显示3个Running
的Nginx Pod); - 查看Service状态:
kubectl get svc
(记录nginx-service
的NodePort
,如30080
); - 访问应用:在浏览器或终端中输入
http://< Master-IP> :30080
(应显示Nginx欢迎页面)。
- 查看Pod状态:
通过以上步骤,即可在CentOS上完成Kubernetes集群的部署,并运行容器化应用。生产环境中还需配置持久化存储(如PV/PVC)、监控(如Prometheus)、日志(如ELK)等功能,以提升集群的可靠性和可维护性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: k8s在centos上的容器化应用如何部署
本文地址: https://pptw.com/jishu/730016.html