[vm搭建k8s] 7 k8s部署和配置
目录1 部署kubernetes(集群中的每台机器都要设置)1.1 创建k8s.sh1.2 执行k8s.sh(很耗时)1.3Master克隆2master配置2.1 初始化2.2 安装pod网络插件2.2.1 下载1.17.0版本的flannel的yaml文件:2.2.2 安装flannel组件3 Worker节点配置3.1Master移植过来的细项修改3.1.1 设置hostname3.1.2
目录
2.2.1 下载1.17.0版本的flannel的yaml文件:
3.6.2 在主节点查询kube-system名称空间下关于node节点pod的信息
上一篇已经分享了安装k8s的必要的三个工具,这篇讲解如何基于上一篇安装的工具来部署k8s。
1 部署kubernetes(集群中的每台机器都要设置)
1.1 创建k8s.sh
部署k8s的过程比较麻烦,我采用.sh的文件方式来一次性完成部署。
执行命令创建sh文件
mkdir /k8s && vi k8s.sh
sh文件里头输入:
#脚本去下载安装各个节点(kube-apiserver.service、kube-controller-manager.service、kube-scheduler.servic、kube-proxy.service、DASHBOARD、DNS、FLANNEL、PAUSE)
#cat k8s.sh
K8S_VERSION=v1.17.0
ETCD_VERSION=3.4.3-0
DASHBOARD_VERSION=v1.8.3
FLANNEL_VERSION=v0.10.0-amd64
DNS_VERSION=1.6.5
PAUSE_VERSION=3.1
# 基本组件
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:$K8S_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:$K8S_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:$K8S_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:$K8S_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd-amd64:$ETCD_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$DNS_VERSION
# 网络组件
docker pull quay.io/coreos/flannel:$FLANNEL_VERSION
# 修改tag
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:$K8S_VERSION k8s.gcr.io/kube-apiserver:$K8S_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:$K8S_VERSION k8s.gcr.io/kube-controller-manager:$K8S_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:$K8S_VERSION k8s.gcr.io/kube-scheduler:$K8S_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:$K8S_VERSION k8s.gcr.io/kube-proxy:$K8S_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd-amd64:$ETCD_VERSION k8s.gcr.io/etcd:$ETCD_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE_VERSION k8s.gcr.io/pause:$PAUSE_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$DNS_VERSION k8s.gcr.io/coredns:$DNS_VERSION
1.2 执行k8s.sh(很耗时)
chmod -R 777 k8s.sh && ./k8s.sh
1.3 Master克隆
到这一步,master节点准备就告一段落了。下一步开始就是要进行master配置了。
但是worker节点跟master到这一步都是一样的。因此,如果使用vmware来模拟主机的话,这个时候建议就要把master以完整的模式克隆一份出去备份(利用vmware workstation的克隆功能来备份)。这样后头worker节点,只要修改一些细项,就可以直接进入配置步骤了,可以减少很多时间,同时如果master节点后面配置出问题了,也可以有一个干净的备份,方便,重来。这是笔者一把鼻涕一把眼泪总结的教训。
2 master配置
一直到这一步之前,master节点和worker节点的操作都是一样。
下面的配置,master节点和worker节点的配置就开始不一样了。
2.1 初始化
先执行:
kubeadm init --kubernetes-version=1.17.0 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.211.3
再执行:
mkdir -p $HOME/.kube && sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config && sudo chown $(id -u):$(id -g) $HOME/.kube/config
2.2 安装pod网络插件
2.2.1 下载1.17.0版本的flannel的yaml文件:
运行命令:
yum install git -y && cd /k8s && git clone GitHub - blackmed/kubernetes-kubeadm
如果上面的git地址文件没了,可以下载我上传到的资源:
2.2.2 安装flannel组件
kubectl create -f flannel.yaml
3 Worker节点配置
Worker节点要放在master节点配置之后再配置,不然worker节点启动不起来。
下面演示的是一个worker节点,如果有多个worker节点就重复相同的步骤即可。
如果使用虚拟机的话,通常worker节点我会从master节点克隆一份。这个要求要有预见性。
因为master和worker节点只有配置不一样。
3.1 Master移植过来的细项修改
如果是直接使用master克隆出来的节点作为worker初始镜像的话,那么这一步要看完,否则,免看。
3.1.1 设置hostname
hostnamectl set-hostname worker1
3.1.2 修改ip
只要改ip,无需配置其他的,因为master已经都做好了。
vi /etc/sysconfig/network-scripts/ifcfg-ens33
将IPADDR修改成192.168.211.4
3.1.3 重启
输入命令reboot回车,即可重启
3.2 启动kubelet
systemctl enable kubelet && systemctl start kubelet
3.3 配置文件复制
3.3.1 复制
需要从master节点复制这两个文件:
/k8s/kubernetes-kubeadm/flannel.yaml (就是master里头通过git下载下来的)
/root/.kube/config (有些人可能会疑惑.kube通过dir没看到,是因为.kube被隐藏了,通过dir -a就可以看到)
复制方式建议使用远程命令的方式:
先在worker节点上(比如worker1)创建一个文件夹: mkdir /k8s
然后在master节点上执行如下命令(将文件拷贝到worker节点的/k8s目录下):
复制第一个文件命令:
scp /k8s/kubernetes-kubeadm/flannel.yaml root@worker1:/k8s
回车会有提示,按提示操作即可
命令2:
scp /root/.kube/config root@worker1:/k8s
回车会有提示,按提示操作即可
3.3.2 配置文件和授权
在worker节点上执行如下命令:
mkdir -p $HOME/.kube && sudo cp -i /k8s/config $HOME/.kube/config && sudo chown $(id -u):$(id -g) $HOME/.kube/config
3.3.3 启动flannel网络
在worker节点上执行如下命令:
cd /k8s && kubectl apply -f flannel.yaml
3.4 Docker配置
运行命令docker info查看 查看Cgroup Driver是否为systemd,如果不是按照如下修改:
打开:
vi /etc/docker/daemon.json
加入下面的内容:
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
重启docker:
systemctl restart docker
查看启动状态:
systemctl status docker
3.5 加入集群
worker节点加入集群的命令是:
kubeadm join 192.168.211.3:6443 --token 184t3d.3bva2h75sd3pbsnx \
--discovery-token-ca-cert-hash sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
可以看出需要三个参数:
Master节点的ip
Token(从master上获取)
Sha256(从master上获取)
第一个参数没有问题。后面两个参数参照下面教程来获取:
3.5.1 获取token
在master节点执行如下命令:
查看现在的token有几条:
kubeadm token list
创建一个新的token:
kubeadmin token create
拿到新创建的记录的token字段的值。
(默认kubeadm装完就有一个token了,为了避免我们人为延迟操作,导致token过期,因此我选择每次重新生成token)
3.5.2 获取sha256
在master节点执行如下命令:
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
输出的那段内容就是我们要的sha256
3.5.3 加入集群
按照上面的参数和命令模板,组装命令,并执行命令,完成加入集群。
加入成功标志
...
This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.
...
错误处理
执行加入集群的命令,如果发现日志卡在 pre flight,那么通过ctrl + c停止运行,然后上面命令在命令后面再加上-v=10,重新执行可以查看到详细的日志,再根据详细的日志进行排查问题。
3.6 验证集群是否添加成功
在任意已经加入集群的worker节点或者是master节点执行如下的验证命令,可以查看到集群的状态信息:
3.6.1 获取集群所有节点
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
3.6.2 在主节点查询kube-system名称空间下关于node节点pod的信息
[root@master ~]# kubectl get pods -n kube-system -o wide |grep node
至此,部署k8s完毕。
下一篇,分享k8s部署应用和管理。
更多推荐
所有评论(0)