K8S 简单部署笔记
基于B站尚硅谷k8s部署教程的学习笔记
基于B站尚硅谷教程的学习笔记
一、准备工作
-
确认学习的时候的部署的方式,使用kubeadm来部署
有两种部署方式,使用kubeadm工具部署,使用二进制部署。
这里kubeadm是官方的部署工具,操作简单。二进制部署有很多配置,可以更好的理解原理。
如果是离线部署,要提前准备好离线包,需要安装的docker,kubelet、kubeadm、kubectl
,calico或者flannel,各种组件的离线安装包ba文件等。
-
确认部署的架构,使用单节点master集群的方式
master没有集群效率低,演示够用的,master集群示例如下
-
使用VMware创建虚拟机,虚拟机硬件配置要求
-
master 2c4g 20g
-
node 4c8g 40g
-
创建3台虚拟机
安装好centos7系统 ,配置好固定ip(百度)
可以使用 ip addr 显示出当前机器的ip地址,可以用xshell进行ssh登录
我这里的地址是
master 192.168.83.130
node1 192.168.83.131
node2 192.168.83.132
为了方便 把主机名也修改为 master node1 node2
hostnamectl set-hostname master
进行一些准备工作
保证ip固定 可以使用本机xshell登录三台虚拟机,并且虚拟机之间互相可以ping通。
用Xshell是因为操作方便,提高效率
-
系统配置的准备,为了防止安装的时候报错
关闭防火墙
关闭selinux
关闭swapoff
可以写成sh脚本 都执行一遍
#关闭防火墙-临时关-永久关
systemctl stop firewalld
systemctl disable firewalld
#关闭selinux-永久关闭-临时关闭
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
#关闭swapoff-临时关-永久关闭
swapoff -a
sed -ri 's/.swap./#&/' /etc/fstab
# 在master节点中绑定IP和主机名
cat >> /etc/hosts << EOF
192.168.83.130 master
192.168.83.131 node1
192.168.83.132 node2
EOF
这里kube-proxy 用的是 iptables ,如果用ipvs配置不同
#设置流量转发 将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
-
同步时间,因为是联网的,之间联网同步时间,如果是离线的,要配置一个时间服务来同步时间 ,一般服务器上都有默认时间同步,不需要这步,如果没有需要
(如果没有科学上网,配置下国内镜像 ,后面在线安装docker等下载镜像也需要用到参考:
https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11CPsfq2
https://blog.csdn.net/weixin_45489155/article/details/106326704)
然后安装
yum -y install ntpdate
ntpdate time.windows.com
如果是离线情况下,方案为一台节点为服务器,其他节点同步这个节点的时间
以上就完成了准备工作
二、给所有的节点安装Dokcer、kubeadm、kubelet
-
安装Docker
在线安装:
配置好了镜像后,不知道可选的有哪些版本,先看一下。如果直接安装默认最新的不一定是稳定版本,选择安装一个稳定的版本
yum list docker-ce --showduplicates | sort -r
#同时都指定版本安装 要不然未指定版本的会是最新的,两个版本不一致
yum -y install docker-ce-19.03.0-3.el7 docker-ce-cli-19.03.0-3.el7
--------------
离线安装:
#下载docker-19.03.9离线包,
#上传到服务器/home/images目录下,解压
tar -zxvf docker-19.03.0.tgz
#授权docker文件目录为可执行文件
chmod -R 777 docker
#将docker文件夹复制到/usr/bin目录下
cp -r docker/* /usr/bin/
#创建/etc/docker目录
mkdir -p /etc/docker
---------------------
#新增配置文件/etc/docker/daemon.json文件 配置镜像方便下载,镜像地址自己选
cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": ["https://vkayqpp3.mirror.aliyuncs.com"],
"insecure-registries": ["镜像仓库ip:5000"],
"exec-opts": ["native.cgroupdriver=systemd"],
"bip": "10.188.0.1/16",
"log-driver": "json-file",
"storage-driver": "overlay2","log-opts": { "max-size": "64m", "max-file": "3"}
}
EOF
#启动docker 并设置开机启动
systemctl enable docker && systemctl start docker
#查看docker版本
docker --version
#查看docker运行状态
systemctl status docker
#如果是已经启动了,后又去修改daemon配置文件的话,重新载入配置重启docker
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
如果发现安装的不对,卸载已经安装的docker
yum list installed | grep docker #使用yum安装的docker信息
yum -y remove docker-ce docker-ce-cli #删除安装的docker
rm -rf /var/lib/docker #删除对应docker配置信息
-
安装kubeadm、kubelet、kubectl
在线安装:
#添加阿里云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=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-1.18.3 kubeadm-1.18.3 kubectl-1.18.3
#设置开机启动 并启动
systemctl enable kubelet && systemctl start kubelet
#初始化master节点只在master节点上执行 apiserver-advertise-address为当前节点的ip image-repository 为配置的镜像地址 service-cidr pod-network-cidr 不知道是什么的ip 只要不冲突就行
kubeadm init \
--apiserver-advertise-address=192.168.83.130 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.3 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
#master点中 执行返回的信息
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#查看node节点信息
kubectl get nodes
#node点中 执行返回的信息 加入节点
kubeadm join 192.168.83.130:6443 --token nd5928.n3akew59iad120gl \
--discovery-token-ca-cert-hash sha256:64e53782ab2021fc73a6e444112371d655491587e4e82911c5e4c7c2c792c6f7
#返回的token信息 有效期为24小时 过期了要重新获取
kubeadm token create --print-join-command
#要删除节点
kubectl delete node 节点名
配置完成后 可以看到节点的状态都为NotReady 还需要配置网络
-
Master节点安装Calico 或者 Flannel 打通网络
我们的项目是用的calico ,ipvs转发的,还要配置ipvs的转发
在线安装:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
kubectl get nodes
状态变为了Ready
-
创建pod测试一下
创建一个pod,安装一个ng的镜像测试下(master节点操作)
#下载ng的镜像创建一个pod
kubectl create deployment nginx --image=nginx
#看看创建成功没
kubectl get pod
#配置对外暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc
看到端口是32103
打开浏览器打开可以看到两个node节点都能打开ng
master节点也可以
http://192.168.83.130:32103/
http://192.168.83.131:32103/
http://192.168.83.132:32103/
测试成功就结束了。
更多推荐
所有评论(0)