环境:
IP | Hosts | 系统 | 角色 |
---|---|---|---|
192.168.174.132 | master | Center OS 7 | master |
192.168174.133 | node1 | Center OS 7 | node1 |
192.168.174.140 | node2 | Center OS 7 | node2 |
192.168.174.141 | node3 | Center OS 7 | node3 |
- 主机名设定(4台都需要一一设置)
hostnamectl set-hostname master
- hosts文件增加解析
192.168.174.132 master
192.168.174.133 node1
192.168.174.140 node2
192.168.174.141 node3
- 关闭防火墙、selinux和swap
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
- 创建/etc/sysctl.d/k8s.conf文件(配置内核参数,将桥接的IPv4流量传递到iptables的链)
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
并执行生效
sysctl -p /etc/sysctl.d/k8s.conf
出现以下报错:
解决:
#安装相关库
sudo yum install -y epel-release
sudo yum install -y conntrack ipvsadm ipset jq sysstat curl iptables
#启动系统模块
sudo modprobe br_netfilter
sudo modprobe ip_vs
#重新执行
sysctl -p /etc/sysctl.d/k8s.conf
5.设置yum源
yum install -y wget
mkdir /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo
yum clean all && yum makecache #清除缓存
6.配置国内Kubernetes源
cat <<EOF > /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
7.配置 docker 源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
8.安装docker(Docker version 18.06.1-ce, build e68fc7a)
yum install -y docker-ce-18.06.1.ce-3.el7 #安装docker
systemctl enable docker && systemctl start docker #启动
docker --version #查看版本
9.安装kubeadm、kubelet、kubectl
–Kubelet负责与其他节点集群通信,并进行本节点Pod和容器生命周期的管理。
–Kubeadm是Kubernetes的自动化部署工具,降低了部署难度,提高效率。
–Kubectl是Kubernetes集群管理工具
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet
- master节点上进行如下操作
集群初始化
–kubernetes-version # 指定要安装的k8s版本
–pod-network-cidr # 指定pod网络地址范围
–service-cidr # 指定service网络地址范围
–apiserver-advertise-address #指定api地址,这里配置成了master的私网接口IP
–image-repository #指定仓库
kubeadm init --kubernetes-version=1.17.3 \
--apiserver-advertise-address=192.168.174.132 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
报错1:the number of available CPUs 1 is less than the required 2
在虚拟机设置设置核心数>1即可
报错2: container runtime is not running: output: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
sudo service docker restart
报错3:docker service is not enabled, please run ‘systemctl enable docker.service’
systemctl enable docker.service
报错4: detected “cgroupfs” as the Docker cgroup driver. The recommended driver is “systemd”. Please follow the guide at https://kubernetes.io/docs/setup/cri/
#创建/etc/docker/daemon.json,加入
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
重启docker
systemctl restart docker
systemctl status docker
报错5: the kubelet version is higher than the control plane version. This is not a supported version skew and may lead to a malfunctional cluster. Kubelet version: “1.16.0” Control plane version: “1.15.0”
#重装kubelet 或者安装时候不指定版本
yum -y remove kubelet
yum -y install kubelet-1.12.1 kubeadm-1.12.1
报错6:error: unknown flag: --image-repository
1.13版本中我们可以增加-image-repository参数
成功返回
kubeadm join 192.168.174.132:6443 --token lf80n5.x0zbqb5d2psvbwpf \
--discovery-token-ca-cert-hash sha256:af5fe701ae5dd7241cfca5127b849f8647d6cf33c4570f2205edcc451283d838
11.配置kubectl工具
mkdir -p /root/.kube
cp /etc/kubernetes/admin.conf /root/.kube/config
kubectl get nodes
kubectl get cs
12.部署flannel网络
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
13.node 节点操作
用之前初始化集群时生成的命令加入集群
或者重新查看证书:
kubeadm token create --print-join-command
14.master查看集群
kubectl get nodes
kubectl get pod --all-namespaces
kube相关操作:
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc
kubectl describe pod nginx-65f88748fd-scnb6 --namespace=kube-system
跟着教程慢慢部署,中间踩了许多坑。慢慢一步步去解决的
感谢大佬教程。原文:https://blog.youkuaiyun.com/zhuwentaolove/article/details/93102268