1. 什么是Kubernetes?
Kubernetes(简称k8s)是一个开源的容器编排平台,用于自动化容器的部署、扩展和管理。它支持多种容器运行时,如Docker和Rocket
2. Kubernetes核心概念
2.1 Pod
-
定义:Pod是Kubernetes中最小的可部署单元,包含一个或多个容器。这些容器共享同一个网络命名空间,可以通过localhost进行通信
-
示例:创建一个简单的Pod,包含一个Nginx容器。
yamltext apiVersion: v1 kind: Pod metadata: name: example-pod spec: containers: - name: example-container image: nginx ports: - containerPort: 80
2.2 Replication Controller
-
定义:Replication Controller确保集群中始终有指定数量的Pod副本在运行。如果某个Pod失效,它会自动替换
-
示例:使用Replication Controller创建三个Nginx Pod副本。
yamltext apiVersion: v1 kind: ReplicationController metadata: name: example-rc spec: replicas: 3 selector: app: example-app template: metadata: labels: app: example-app spec: containers: - name: example-container image: nginx ports: - containerPort: 80
2.3 Service
-
示例:创建一个Service来访问前面的Nginx Pod。
yamltext apiVersion: v1 kind: Service metadata: name: example-service spec: selector: app: example-app ports: - name: http port: 80 targetPort: 80 type: ClusterIP
3. 服务器配置要求
在部署Kubernetes之前,需要确保服务器满足以下最低配置要求:
- CPU:至少2个核心(主节点建议4个核心以上)
- 内存:至少2GB RAM(主节点建议4GB以上)
- 存储:至少20GB可用磁盘空间(主节点建议50GB以上)
- 操作系统:支持多种Linux发行版,如Ubuntu 18.04或CentOS 7及以上版本
4. 安装步骤
4.1 准备环境
-
关闭防火墙和SELinux:
arduinobash sudo systemctl stop firewalld sudo systemctl disable firewalld sudo setenforce 0
-
配置SELinux :编辑
/etc/selinux/config
文件,将SELINUX
设置为disabled
,然后重启系统。 -
安装必要的软件:
arduinobash sudo yum install -y epel-release sudo yum install -y etcd socat conntrack ebtables ipset
4.2 安装Docker
-
安装Docker:
bashbash sudo yum install -y docker sudo systemctl start docker sudo systemctl enable docker
4.3 安装Kubernetes
-
添加Kubernetes仓库:
inibash cat /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0 EOF
-
安装Kubernetes组件:
rustbash sudo yum install -y kubelet kubeadm kubectl
-
启动kubelet服务:
bashbash sudo systemctl start kubelet sudo systemctl enable kubelet
4.4 初始化Kubernetes集群
-
初始化集群:
arduinobash sudo kubeadm init --image-mirror 'docker.io/mirrorgooglecontainers' --pod-network-cidr=10.244.0.0/16
-
配置kubectl:
bashbash mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
-
部署网络插件(例如Flannel):
bashbash curl -s https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm64/g" | kubectl apply -f -
5. 验证安装
-
检查Pod状态:
arduinobash kubectl get pods -A
-
检查节点状态:
arduinobash kubectl get nodes
6. 部署示例应用
-
创建一个简单的Pod:
bash kubectl apply -f pod.yaml
-
查看Pod状态:
arduinobash kubectl get pods
7. 使用kubectl管理集群
- 部署应用 :使用
kubectl apply
命令部署应用。 - 监控集群 :使用
kubectl get
命令查看资源状态。 - 日志查看 :使用
kubectl logs
命令查看容器日志。