1.在虚拟机中安装3台centos(版本为1708)
①下载镜像可找国内镜像地址镜像下载
https://www.cnblogs.com/LiLiliang/p/12090115.html
2.检查网络是否通畅,ping以下百度的IP地址(可在主机命令符中ping baidu.com得到解析后的IP)
*** 报错 network is unreachable可修改ifcfg-ens3配置进行解决
cd /etc/sysconfig/network-scripts/
vi ifcfg-ens33
修改ONBOOT=yes
重启network
service network restart
检查网络可用
3.修改源镜像地址
①安装wget命令
yum -y install wget
②备份系统自带的源镜像地址
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
③下载阿里云的源镜像地址
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
④生成缓冲
yum makecache
4.安装VMware Tools
*** 如果觉得安装VMware-TOOLS过于麻烦,可使用Linux远程工具(CRT或者SSH),在宿主机器上进行连接使用。实测好用很多(* ̄︶ ̄)
①点击菜单栏–>虚拟机–>安装VMware Tools
②在虚拟机中,以 root 身份登录客户机操作系统,打开终端窗口并运行ls /dev命令查看是否含有cdrom目录
③将CD-ROM挂载到其他目录下,一般是将/dev/cdrom 挂载到/mnt/cdrom目录
使用ls /mnt查看是否已经含有/cdrom目录 如果没有则创建cdrom
mkdir cdrom
④使用命令mount -t iso9660 /dev/cdrom /mnt/cdrom将光盘挂载在/mnt/cdrom目录,并使用命令ls /mnt/cdrom查看是否挂载成功
mount -t iso9660 /dev/cdrom /mnt/cdrom ls /mnt/cdrom
⑤将后缀名为tar.gz的文件拷贝到家目录下,使用命令cp /mnt/cdrom/ VMwareTools-9.9.3-2759765.tar.gz ~,并用命令ls ~查看是否复制成功
cp /mnt/cdrom/ VMwareTools-9.9.3-2759765.tar.gz ~ ls ~
⑥使用命令umount /dev/cdrom解除挂载
umount /dev/cdrom
⑦进去root跟目录下,使用命令tar -zxvf VMwareTools-9.9.3-2759765.tar.gz解压包
tar -zxvf VMwareTools-9.9.3-2759765.tar.gz
⑧使用命令cd vmware-tools-distrib进入到解压后的源码文件目录,运行vmware-install.pl文件
cd vmware-tools-distrib ./vmware-install.pl
*** 如果出现以下错误(“-bash: ./vmware-install.pl: /usr/bin/per: bad interpreter: No such file or directory”),表明未安装编译环境
安装编译环境
yum -y install perl gcc gcc-c++ make cmake kernel kernel-headers kernel-devel net-tools
5.关闭、禁用防火墙:
systemctl stop firewalld systemctl disable firewalld
6.禁用SELINUX(setenforce是Linux的selinux防火墙配置命令, 执行setenforce 0 表示关闭selinux防火墙):
setenforce 0
7.创建 /etc/sysctl.d/k8s.conf 文件,添加如下内容:
net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1
使得配置文件生效
modprobe br_netfilter sysctl -p /etc/sysctl.d/k8s.conf
** 界面繁琐时可reset命令进行清空界面
8.安装docker
# step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE sudo yum makecache fast sudo yum -y install docker-ce
# Step 4: 开启Docker服务 sudo service docker start # Step 5: 设置开机启动 sudo systemctl enable docker
查看docker是否安装成功
docker -v
9.配置阿里云镜像加速器:
mkdir -p /etc/docker tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://obww7jh1.mirror.aliyuncs.com"] } EOF systemctl daemon-reload systemctl restart docker
10.安装 kubelet kubeadm kubectl
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 yum install -y kubelet kubeadm kubectl systemctl enable --now kubelet
11.初始化 Master 节点 master
kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository=registry.aliyuncs.com/google_containers
l --pod-network-cidr :后续安装 flannel 的前提条件,且值为 10.244.0.0/16, 参考资料
l --image-repository :指定镜像仓库
**报错the number of available CPUs 1 is less than the required 2
解决:需要机器至少需要两核,修改虚拟机设置即可
报错running with swap on is not supported. Please disable swap
解决:需要关闭swap
swapoff -a
修改 vi /etc/fstab 文件,注释掉 SWAP 的自动挂载,使用free -m确认swap已经关闭。 swappiness参数调整,修改vi /etc/sysctl.d/k8s.conf添加下面一行:
vm.swappiness=0
执行sysctl -p /etc/sysctl.d/k8s.conf使修改生效。
从日志中,可以看出,要使用集群,需要执行如下命令:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
还需要部署一个 Pod Network 到集群中,此处选择 flannel :
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
** 如果此处报错连接不上raw.githubusercontent.com,可自行在下载kube-flannel.yml,放到虚拟机系统中
参考链接:https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml
至此,Master 节点初始化完毕,查看集群相关信息:
# 查看集群信息 $ kubectl cluster-info
# 查看节点信息$ kubectl get nodes
# 查看 Pods 信息$ kubectl get pods --all-namespaces
如果初始化过程出现问题,使用如下命令重置:
kubeadm reset rm -rf /var/lib/cni/ rm -f $HOME/.kube/config
12.将node1和node2加到master中
在master中生成token和sh256
kubeadm token createopenssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
在node1和node2中join
kubeadm join 192.168.19.133:6443 --token kgm5g2.i9h9zupp09ai0ema--discovery-token-ca-cert-hash sha256:821850c1ff323bc8555006f9c6eb9d0f135d91898aa11c8821678144e715210a
注意:实际命令中的ip、token和sha256应以自己机器实际的为准
在master中查看
kubectl get nodes
***如果这里是notready,如果pod状态为Pending、ContainerCreating、ImagePullBackOff 都表明 Pod 没有就绪,Running 才是就绪状态。
如果有pod提示Init:ImagePullBackOff,说明这个pod的镜像在对应节点上拉取失败,我们可以通过 kubectl describe pod 查看 Pod 具体情况,以确认拉取失败的镜像:
可以用国内镜像源,注意命令中的版本号应和自己的实际版本号一致,可用 kubectl describe pod kube-flannel-ds-amd64-d2r8p --namespace=kube-system查看(kube-flannel-ds-amd64-d2r8p为pod名称)
docker pull quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64
docker tag quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64
13.测试集群各个组件
首先验证kube-apiserver, kube-controller-manager, kube-scheduler, pod network 是否正常:部署一个 Nginx Deployment,包含2个Pod
kubectl create deployment nginx --image=nginx:alpine
kubectl scale deployment nginx --replicas=2
验证Nginx Pod是否正确运行,并且会分配10.244.开头的集群IP
kubectl get pods -l app=nginx -o wide
验证一下kube-proxy是否正常
kubectl expose deployment nginx --port=80 --type=NodePort
可以通过任意 NodeIP:Port 在集群外部访问这个服务:
curl 192.168.150.128:30670
参考地址:https://www.cnblogs.com/tylerzhou/p/10971336.html
**如果机器断电关机后,无法启动,报The connection to the server localhost:8080 was refused 错误
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile source ~/.bash_profile
执行这两天命令可解决