前提
(1)三台能联网的虚拟机
角色
| IP
| 配置
|
master221
| 192.168.129.221
| CPU2核心,内存2G
|
slave223
| 192.168.129.223
| CPU2核心,内存2G
|
slave224
| 192.168.129.224
| CPU2核心,内存2G
|
(2)操作系统 CentOS7 64位
集群中所有服务器之间可以网络互通,访问外网
禁止swap分区
安装步骤
环境配置
关闭防火墙(master221,slave223,slave224)
systemctl stop firewalld
systemctl disable firewalld
关闭selinux(master221,slave223,slave224)
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 临时
关闭swap (master221,slave223,slave224)
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
根据规划设置主机名(根据自己的命名,去每一台执行自己的命令)
hostnamectl set-hostname master221 #在221结点执行
hostnamectl set-hostname slave222 #在222结点执行
hostnamectl set-hostname slave223 #在223结点执行
在master添加hosts(master221,slave223,slave224)
cat >> /etc/hosts << EOF
192.168.129.221 master221
192.168.129.223 slave223
192.168.129.224 slave224
EOF
将桥接的IPv4流量传递到iptables的链(master221,slave223,slave224)
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
时间与windows同步
yum install ntpdate -y
ntpdate time.windows.com
安装Docker(master221,slave223,slave224)
安装Docker
#下载指定版本docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
#安装docker
yum -y install docker-ce-18.06.1.ce-3.el7
#开启docker服务
systemctl enable docker && systemctl start docker
#查看docker版本
docker --version
#查看docker信息
docker info
设置docker仓库为阿里镜像仓库
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF
# 重启docker
systemctl restart docker
# 查看仓库是否加入成功
docker info
添加阿里云YUM软件源
cat > /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 https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
安装kubeadm、kubelet、kubectl(master221,slave223,slave224)
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
systemctl enable kubelet
部署k8s master、加入node
在192.168.129.221(master221)上执行
注意:apiserver-advertise-address属性值为master221的ip
kubeadm init \
--apiserver-advertise-address=192.168.129.221 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16

按照上图输入的日志在master执行方框1里面的内容(master221)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
查询节点(master221)

slave结点加入集群(slave223,slave224)
注意:下面内容为上上图上方框中的内容
kubeadm join 192.168.129.221:6443 --token un45uv.6l06g4q8alkcgelb \
--discovery-token-ca-cert-hash sha256:46617920d7a26a52d5d1330ab07f6af778e59db921c691c04d7679c0dab0eacc
查询结点(master221,slave223,slave224)

注意:此时在slave223,slave223中执行上面遇见可能会出现下面情况,解决情况如下:

参考:error: no configuration has been provided, try setting KUBERNETES_MASTER environment variable_afriendlyman的博客-
上面的链接中的解决方法是在配置环境变量
export KUBECONFIG=/etc/kubernetes/admin.conf 最后是admin.conf文件,你要看看你的文件叫什么名字,我的文件叫kubelet.conf
部署CNI网络插件
在主结点部署CNI(master221)
注意:如果出现连接失败,多执行几次
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
查看pod的状态
kubectl get pods -n kube-system

稍等片刻再次执行,上面的命令,直到上图中所有的STATUS为runing
查询结点(master221,slave223,slave224)
此时所有的结点状态为Ready状态

测试集群
在Kubernetes集群中创建一个nginx pod,验证是否正常运行
#创建pod
kubectl create deployment nginx --image=nginx
#暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort
#查看pod,service信息
kubectl get pod,svc

http://192.168.129.221:32373/ 就访问到nginx
参考
虚拟机IP配置
Vmware虚拟机设置静态IP地址 - 麦兜日常学习笔记 -
k8s环境搭建
kubeadm搭建简单的k8s集群_Pastthewind的博客-
尚硅谷Kubernetes教程(K8s入门到精通)_哔哩哔哩_bilibili
问题:no configuration has been provided, try setting KUBERNETES_MASTER environment variable
error: no configuration has been provided, try setting KUBERNETES_MASTER environment variable_afriendlyman的博客-