- 准备环境
所有机器操作系统ISO:CentOS-7-x86_64-DVD-1810.iso
容器版本:docker-ce-18.06.3.ce-3.el7
kubelet-1.16.2 kubeadm-1.16.2 kubectl-1.16.2
机器信息:master 192.168.1.10
node11 192.168.1.11
node12 192.168.1.12
-
- 修改hosts和机器名(所有机器)
一、修改三台机器的/etc/hosts文件,向文件追加以下内容
192.168.1.10 master
192.168.1.11 node11
192.168.1.12 node12
效果如下图:
二、修改各主机名/etc/hostname,如下图
注:这里只显示对master的操作,另两台节点也需要进行相应的设置,
-
- 修改yum源(所有机器)
- 备份原有的yum基础文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
二、下载新的CentOS-Base.repo到 /etc/yum.repos.d/
cd /etc/yum.repos.d
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
三、清空内存的缓存,重新生成
yum clean all
yum makecache fast
效果如下图:
-
- 禁用防火墙(所有机器)
systemctl stop firewalld
systemctl disable firewalld
-
- 禁用selinux(所有机器)
- 执行命令:setenforce 0
二、修改/etc/selinux/config文件,把SELINUX值改成disabled,在最后一行添加 SELINUXTYPE=targeted
如下图:
-
- 禁用swap(所有机器)
- 执行命令:swapoff -a
二、 修改 /etc/fstab 文件,注释掉 SWAP 的自动挂载,
如下图:
-
- 创建k8s.conf文件(所有机器)
- 创建/etc/sysctl.d/k8s.conf文件,文件内容如下
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
vm.swappiness=0
如下图:
二、执行以下命令使其生效
modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf
- 使用kubeadm部署kubernetes
- 安装docker(所有机器)
- 安装辅助工具
yum install -y um-utils device-mapper-persistent-data lvm2
二、添加docker的yum源
yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum clean all
yum makecache fast
三、查看docker可安装版本:
yum list docker-ce.x86_64 --showduplicates |sort -r
如下图:
四、安装18.06.3 版本的docker
yum install -y --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7
五、开启docker并开机自启
systemctl enable docker
systemctl start docker
六、查看docker状态
systemctl status docker
如下图:
2.2安装kubeadm、kubectl、kubelet(所有机器)
一、创建资源文件/etc/yum.repos.d/kubernetes.repo,文件内容如下:
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
enabled=1
如下图:
二、更新yum源
yum makecache fast
三、安装kubelet、kubeadm、kubectl
yum install -y kubelet-1.16.2 kubeadm-1.16.2 kubectl-1.16.2
四、开机启动kubelet服务
systemctl start kubelet
systemctl enable kubelet
提示:此时kubelet的服务运行状态是异常的,因为缺少主配置文件kubelet.conf。但可以暂不处理,因为在完成Master节点的初始化后才会生成这个配置文件。
2.3安装kubenetes所需镜像(所有机器)
一、查看docker所需镜像
kubeadm config images list
如下图:
二、创建文件/root/soft/k8s_images,文件内容如下
echo "Pull Kubernetes v1.16.2 Images from aliyuncs.com ......"
echo "=========================================================="
echo ""
KUBE_VERSION=v1.16.2
KUBE_PAUSE_VERSION=3.1
ETCD_VERSION=3.3.15-0
CORE_DNS_VERSION=1.6.2
GCR_URL=k8s.gcr.io
ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers
images=(kube-proxy:\${KUBE_VERSION}
kube-scheduler:\${KUBE_VERSION}
kube-controller-manager:\${KUBE_VERSION}
kube-apiserver:\${KUBE_VERSION}
pause:\${KUBE_PAUSE_VERSION}
etcd:\${ETCD_VERSION}
coredns:\${CORE_DNS_VERSION})
for imageName in \${images[@]} ; do
docker pull \$ALIYUN_URL/\$imageName
docker tag \$ALIYUN_URL/\$imageName \$GCR_URL/\$imageName
docker rmi \$ALIYUN_URL/\$imageName
done
echo ""
echo "=========================================================="
echo "Pull Kubernetes v1.16.2 Images FINISHED."
echo "into registry.cn-hangzhou.aliyuncs.com/openthings, "
echo " by openthings@https://my.oschina.net/u/2306127."
echo "=========================================================="
如下图:
三、修改k8s_images为可执行文件
chmod +x /root/soft/k8s_images
四、执行k8s_images
/root/soft/k8s_images
2.4使用kubeadm init初始化集群(master)
一、执行命令初始化集群
kubeadm init --kubernetes-version=v1.16.2 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.1.10
可能会出现的问题及解决方法如下:
- CPU核心至少两个
解决:增加CPU核心数量
- swap问题
vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
- docker Cgroup驱动的问题,因为更改为systemd
创建文件/etc/docker/daemon.json,文件内容如下
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
最后重启systemctl daemon-reload
systemctl restart docker
二、初始化成功
如下图:
注意:第一个红色方框表示初始化成功,第二个方框内容需记录下来,添加节点需要使用
三、配置常规用户如何使用kubectl访问集群 (root用户可以只执行上面两条)
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
(这3条命令可以直接复制使用。例如用ipran用户时候就可以直接使用了)
四、查看集群状态
kubectl get cs
如下图:
2.5安装Pod Network (master)
一、执行命令安装fiannel networik
mkdir -p ~/k8s/
cd ~/k8s/
kubectl apply -f kube-flannel.yml
如下图:
二、使用kubectl get pod --all-namespaces -o wide确保所有的Pod都处于Running状态。
如下图:
2.6向Kubernetes集群的Node节点发送配置文件 (master)
一、将修改过的配置文件复制到node节点
1. scp /etc/sysconfig/kubelet node11:/etc/sysconfig/
如下图:
- scp /etc/kuberbetes/admin.conf node11:/etc/kubernetes/
如下图:
2.7通过之前记录的命令将节点加入集群(Node)
2.8两个Node节点配置目录和kubelet文件的复制(Node)
一、添加/$HOME/.kube目录
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
2.9 查看节点集群状态(master)
查询命令:kubectl get nodes
如下图: