1. Kubernetes简介
Kubernetes,简称K8s,是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它由Google设计并捐赠给了Cloud Native Computing Foundation进行维护。Kubernetes允许您以声明式的方式定义和管理容器化应用程序,使您能够轻松地在多台物理或虚拟机上运行这些应用程序。
2. 系统要求
在开始安装Kubernetes之前,您需要确保您的系统满足以下要求:
- 操作系统:CentOS 7、Ubuntu 16.04+、Debian 9+
- 硬件要求:至少2GB内存
- 网络要求:所有节点之间必须能够互相通信
3. 安装前的准备工作
3.1 关闭swap
由于Kubernetes使用透明大页(Transparent Hugepage)特性,需要关闭swap。以下是在CentOS和Ubuntu中关闭swap的命令:
# CentOS
sudo swapoff -a
sudo vi /etc/sysctl.conf
# 在文件中添加以下内容
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
# 保存并退出
sudo sysctl -p
# Ubuntu
sudo swapoff -a
sudo vi /etc/fstab
# 将swap相关的行注释掉
# 保存并退出
3.2 更新系统
更新系统以确保所有软件包都是最新的。
sudo yum update -y # CentOS
sudo apt update && sudo apt upgrade -y # Ubuntu
3.3 安装Docker
Kubernetes依赖于Docker,因此需要先安装Docker。以下是在CentOS和Ubuntu中安装Docker的命令:
# CentOS
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker
# Ubuntu
sudo apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker
3.4 安装Kubeadm、Kubelet和Kubectl
Kubeadm、Kubelet和Kubectl是Kubernetes集群的必要组件。
# 添加Kubernetes YUM仓库
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes Yum Repository
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
exclude=kubelet kubeadm kubectl
EOF
# 安装Kubeadm、Kubelet和Kubectl
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
# 配置Kubelet
sudo vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
# 将ExecStart行修改为以下内容
ExecStart=/usr/bin/kubelet \
--address=127.0.0.1 \
--pod-manifest-path=/etc/kubernetes/manifests \
--allow-privileged=true \
--config=/etc/kubernetes/kubelet.conf \
--cgroup-driver=systemd \
--network-plugin=cni \
--horizontal-pod-autoscaler-config-path=/etc/kuberneteshorizontal-pod-autoscaler.yaml \
--kubeconfig=/etc/kubernetes/kubelet.conf \
--runtime-config=kubelet.config特征的运行时配置 \
--image-pull-progress-deadline=10m \
--v=0
# 保存并退出
sudo systemctl daemon-reload
sudo systemctl start kubelet
sudo systemctl enable kubelet
4. 集群初始化
在主节点上执行以下命令进行集群初始化:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
执行完成后,您会得到以下信息:
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You can now join any number of worker nodes by running the following on each as root:
kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
5. 配置kubectl
将/etc/kubernetes/admin.conf文件复制到您的本地机器,并设置KUBECONFIG环境变量。
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=$HOME/.kube/config
6. 安装Pod网络
为了使Pod能够在不同的节点之间通信,需要安装一个Pod网络。以下是在Kubernetes集群中安装Calico网络的命令:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
7. 验证集群状态
最后,验证集群状态以确保一切正常:
kubectl get nodes
您应该能看到所有节点都处于Ready状态。
8. 总结
恭喜您!您已经成功搭建了一个Kubernetes集群。现在,您可以开始部署应用程序并利用Kubernetes的强大功能了。希望这个教程能帮助您入门Kubernetes,祝您学习愉快!