一、环境准备
-
服务器规划
角色
IP地址
配置要求
Master
192.168.118.18
2核CPU/2G内存
Node01
192.168.118.19
2核CPU/2G内存
Node02
192.168.118.20
2核CPU/2G内存
-
系统初始化
bash
bash# 关闭SELinux setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 关闭防火墙 systemctl stop firewalld && systemctl disable firewalld # 禁用Swap swapoff -a sed -i '/swap/s/^/#/' /etc/fstab # 配置内核参数 cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF sysctl --system
二、Docker安装(1.13版本)
-
配置YUM源
bash
bash# 安装依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 # 添加Docker源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 安装指定版本 yum install -y docker-ce-1.13.1 docker-ce-cli-1.13.1 containerd.io # 启动服务 systemctl start docker && systemctl enable docker # 验证版本 docker version | grep '1.13.1'
-
配置镜像加速
bash
javascriptcat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://hub-mirror.c.163.com"], "exec-opts": ["native.cgroupdriver=systemd"] } EOF systemctl restart docker
三、Kubernetes组件安装
-
添加K8S源
bash
inicat > /etc/yum.repos.d/kubernetes.repo << EOF [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg EOF
-
安装指定版本
bash
bash# 安装kubeadm/kubelet/kubectl 1.5.2 yum install -y kubelet-1.5.2 kubeadm-1.5.2 kubectl-1.5.2 # 启动服务 systemctl enable kubelet && systemctl start kubelet
四、集群初始化(Master节点)
-
拉取镜像
bash
bash# 手动拉取K8S基础镜像 images=(kube-proxy:v1.5.2 kube-scheduler:v1.5.2 kube-controller-manager:v1.5.2 kube-apiserver:v1.5.2 etcd:3.0.18 pause:3.0) for imageName in ${images[@]}; do docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName done
-
初始化集群
bash
bashkubeadm init --kubernetes-version=v1.5.2 \ --pod-network-cidr=10.244.0.0/16 \ --service-cidr=10.96.0.0/12 \ --ignore-preflight-errors=Swap # 配置kubectl mkdir -p $HOME/.kube cp /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config
五、Node节点加入集群
-
执行Master生成的加入命令
bash
sqlkubeadm join 192.168.118.18:6443 \ --token xxxxx.xxxxxxxxxx \ --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
六、部署网络插件(Flannel)
bash
bash
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.7.1/Documentation/kube-flannel.yml
七、集群验证
bash
csharp
# 查看节点状态
kubectl get nodes
# 查看系统组件状态
kubectl get pods -n kube-system
# 验证DNS功能
kubectl run busybox --image=busybox:1.28 --rm -it -- sh
nslookup kubernetes.default
注意事项:
- Kubernetes 1.5.2为老旧版本,无官方安全支持,生产环境建议使用1.23+版本
- Docker 1.13需搭配cri-dockerd适配器才能在K8S 1.24+中使用
- 如需高可用部署,需额外配置负载均衡和etcd集群