Kubernetes 1.8 单机部署全指南:从环境搭建到集群管理

Kubernetes 1.8 单机部署全指南:从环境搭建到集群管理

在容器化技术日益普及的今天,Kubernetes(K8s)作为容器编排领域的领头羊,其稳定性和灵活性备受开发者青睐。对于想要快速上手Kubernetes的开发者或小型项目团队而言,单机部署是一个高效且经济的选择。本文将详细介绍如何在单机环境下部署Kubernetes 1.8版本,包括环境准备、组件安装、配置与启动、集群验证以及常见问题解决,旨在为读者提供一套完整、可操作的部署方案。

一、环境准备

1.1 系统要求

Kubernetes 1.8对操作系统有一定的要求,推荐使用CentOS 7.x或Ubuntu 16.04 LTS及以上版本。这些系统版本稳定,且对Kubernetes的支持较好。

1.2 硬件配置

单机部署时,建议至少配备4GB内存、2核CPU及50GB磁盘空间。对于资源紧张的环境,可适当调整,但需注意,资源不足可能导致Kubernetes运行不稳定。

1.3 网络配置

确保单机能够访问互联网,以便下载Kubernetes相关组件和镜像。同时,配置好防火墙规则,允许Kubernetes所需端口(如6443、10250等)的通信。

二、组件安装

2.1 安装Docker

Kubernetes依赖Docker作为容器运行时。在CentOS上,可通过以下命令安装Docker CE版:

  1. sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  2. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  3. sudo yum install docker-ce
  4. sudo systemctl start docker
  5. sudo systemctl enable docker

2.2 安装Kubernetes组件

Kubernetes 1.8主要由kubelet、kubeadm和kubectl三个组件组成。在CentOS上,可通过添加Kubernetes官方仓库并安装:

  1. cat <<EOF > /etc/yum.repos.d/kubernetes.repo
  2. [kubernetes]
  3. name=Kubernetes
  4. baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
  5. enabled=1
  6. gpgcheck=1
  7. repo_gpgcheck=1
  8. gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
  9. EOF
  10. sudo yum install -y kubelet kubeadm kubectl
  11. sudo systemctl enable kubelet && sudo systemctl start kubelet

三、配置与启动

3.1 初始化Kubernetes集群

使用kubeadm初始化集群,指定API服务器地址和Pod网络插件(如Calico):

  1. sudo kubeadm init --apiserver-advertise-address=<单机IP> --pod-network-cidr=192.168.0.0/16

初始化完成后,kubeadm会输出加入集群的命令,保存好kubeadm join命令,后续节点加入时使用。

3.2 配置kubectl

将kubeadm生成的配置文件复制到用户目录下,以便kubectl命令使用:

  1. mkdir -p $HOME/.kube
  2. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  3. sudo chown $(id -u):$(id -g) $HOME/.kube/config

3.3 安装Pod网络插件

以Calico为例,安装其作为Pod网络插件:

  1. kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubeadm/1.7/calico.yaml

四、集群验证

4.1 验证节点状态

使用kubectl get nodes命令查看节点状态,确保节点处于Ready状态。

4.2 部署测试应用

部署一个简单的Nginx应用,验证集群功能:

  1. kubectl create deployment nginx --image=nginx
  2. kubectl expose deployment nginx --port=80 --type=NodePort

通过kubectl get svc获取Nginx服务的NodePort端口,然后在浏览器中访问单机IP加NodePort端口,验证Nginx是否正常运行。

五、常见问题解决

5.1 镜像下载失败

由于国内网络环境,直接下载Kubernetes官方镜像可能失败。可通过配置镜像仓库镜像或使用阿里云等国内镜像源解决。

5.2 节点未就绪

节点未就绪通常与kubelet状态或网络插件配置有关。检查kubelet日志(journalctl -u kubelet)和网络插件状态,确保所有组件正常运行。

5.3 资源不足

单机资源有限,运行多个Pod时可能出现资源不足的情况。可通过调整Pod资源请求和限制(resources.requestsresources.limits),或优化应用资源使用来解决。

六、总结与展望

Kubernetes 1.8单机部署为开发者提供了一个快速上手容器编排技术的平台。通过本文的介绍,读者应已掌握了从环境准备到集群验证的全过程。未来,随着Kubernetes版本的迭代,单机部署方案也将不断完善,为更多场景下的容器化应用提供支持。对于生产环境,建议考虑多节点集群部署,以提高系统的可用性和扩展性。