要启动容器,需先确保CentOS系统上已部署可用的Kubernetes集群(以Master节点为例,Worker节点需先通过kubeadm join加入集群)。
sudo systemctl stop firewalld && sudo systemctl disable firewalld
sudo setenforce 0 && sudo sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
sudo swapoff -a && sudo sed -i '/swap/d' /etc/fstab
sudo hostnamectl set-hostname k8s-master # 设置主机名
echo "192.168.1.100 k8s-master" | sudo tee -a /etc/hosts # 替换为Master节点IP
Kubernetes依赖Docker作为容器运行时(也可选择containerd,但Docker更常用):
# 添加Docker镜像源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 启动Docker并设置开机自启
sudo systemctl enable docker && sudo systemctl start docker
# 添加Kubernetes镜像源
cat <<EOF | sudo tee /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
# 安装kubelet、kubeadm、kubectl
sudo yum install -y kubelet kubeadm kubectl
# 启动kubelet
sudo systemctl enable kubelet && sudo systemctl start kubelet
sudo kubeadm init \
--apiserver-advertise-address=192.168.1.100 \ # 替换为Master节点IP
--pod-network-cidr=10.244.0.0/16 # 指定Pod网络CIDR(与后续网络插件匹配)
初始化完成后,按提示配置kubectl:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Pod网络插件是容器间通信的基础:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl get nodes # 查看节点状态(应为Ready)
kubectl get pods --all-namespaces # 查看所有Pod状态(应为Running)
Kubernetes中启动容器需通过Pod(最小调度单元)定义,以下是两种常见方式:
创建centos-pod.yaml文件,内容如下:
apiVersion: v1
kind: Pod
metadata:
name: centos-container # Pod名称
labels:
app: centos # 标签(可选,用于后续管理)
spec:
containers:
- name: centos-pod # 容器名称
image: centos:latest # 使用最新版CentOS镜像
command: ["/bin/bash", "-c", "sleep 3600"] # 容器启动后执行的命令(保持容器运行)
# 若需覆盖镜像默认命令,可调整command和args(参考Kubernetes命令配置规则)
应用配置启动Pod:
kubectl apply -f centos-pod.yaml
验证Pod状态:
kubectl get pods # 查看Pod是否处于Running状态
kubectl run命令快速启动若无需复杂配置,可直接通过命令启动临时Pod:
kubectl run centos-temp --image=centos:latest --command -- /bin/bash -c "sleep 3600"
--image:指定镜像(此处为CentOS最新版);--command:后面跟随的命令会覆盖镜像默认命令;-- /bin/bash -c "sleep 3600":容器启动后执行的命令(保持容器运行)。验证Pod状态:
kubectl get pods
Pod启动后,可通过kubectl exec命令进入容器:
kubectl exec -it centos-container -- /bin/bash # 替换为你的Pod名称
进入后,可执行ls、pwd等命令验证容器环境。
command(对应Docker的ENTRYPOINT)和args(对应Docker的CMD)字段定义。若未指定,将使用镜像默认命令。Pending,需检查网络插件是否部署成功;若为Error,可通过kubectl describe pod <pod-name>查看具体原因。command和args的组合能保持进程活跃(如sleep infinity或启动服务)。通过以上步骤,即可在CentOS系统上成功启动Kubernetes容器。