linux cpu占用率如何看
315
2022-10-25
跟我学k8s:Kubernetes v.1.21集群安装部署过程(kubeadm方式)
配套学习课程:
k8s集群部署【基于k8s1.21版本】 用途 k8smaster(172.16.213.221) k8s集群的master节点 k8snode1(172.16.213.222) k8s集群的work节点1 k8snode2(172.16.213.223) k8s集群的work节点2
2、升级内核
#安装新内核
[root@master1 kernel]# wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-5.4.114-1.el7.elrepo.x86_64.rpm [root@master1 kernel]# wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.114-1.el7.elrepo.x86_64.rpm [root@master1 kernel]# yum -y install kernel-lt-5.4.114-1.el7.elrepo.x86_64.rpm kernel-lt-devel-5.4.114-1.el7.elrepo.x86_64.rpm
#调整默认内核启动
[root@master1 kernel]# grub2-set-default "CentOS Linux (5.4.114-1.el7.elrepo.x86_64) 7 (Core)"
#检查是否修改正确并重启系统
[root@master1 kernel]# grub2-editenv list [root@master1 kernel]# reboot
3、开启IPVS支持
创建/etc/sysconfig/modules/ipvs.modules文件,内容如下:
#!/bin/bash ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_fo ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack" for kernel_module in ${ipvs_modules}; do /sbin/modinfo -F filename ${kernel_module} > /dev/null 2>&1 if [ $? -eq 0 ]; then /sbin/modprobe ${kernel_module} fi done
最后,执行如下命令使配置生效:
[root@master1 kernel]# chmod 755 /etc/sysconfig/modules/ipvs.modules [root@master1 kernel]# sh /etc/sysconfig/modules/ipvs.modules [root@master1 kernel]# lsmod | grep ip_vs
4、关闭防火墙、selinux
K8s集群每个节点都需要关闭防火墙,执行如下操作:
[root@master1 kernel]# systemctl stop firewalld && systemctl disable firewalld [root@master1 kernel]# setenforce 0 [root@master1 kernel]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
接着,还需要关闭系统的交换分区,执行如下命令:
[root@master1 kernel]# swapoff -a [root@master1 kernel]# cp /etc/fstab /etc/fstab.bak [root@master1 kernel]# cat /etc/fstab.bak | grep -v swap > /etc/fstab
然后,还需要修改iptables设置,在/etc/sysctl.conf中添加如下内容:
vm.swappiness = 0 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1
最后,执行如下命令,以使设置生效:
[root@master1 kernel]# sysctl -p
5、主机名本地解析配置
每个主机的主机名以及IP地址都在上面环境介绍中给出来了,根据这些信息,在每个k8s集群节点添加如下主机名解析信息,将这些信息添加到每个集群节点的/etc/hosts文件中,主机名解析内容如下:
127.0.0.1 localhost 172.16.213.221 k8smaster 172.16.213.222 k8snode1 172.16.213.223 k8snode2
6、安装docker环境(所有节点都执行下面步骤)
所有节点都需要安装docker,每个节点都需要使docker开机自启,执行如下命令
[root@master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 [root@master ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo [root@master ~]# yum makecache fast [root@master ~]# yum install docker-ce -y [root@master ~]# systemctl restart docker [root@master ~]# systemctl enable docker [root@master ~]# docker version
7、安装Kubeadm、kubelet、kubectl工具
在确保系统基础环境配置完成后,现在我们就可以来安装 Kubeadm、kubelet了,我这里是通过指定yum 源的方式来进行安装,使用阿里云的源进行安装:
[root@k8smaster ~]# cat <
然后安装 kubeadm、kubelet、kubectl,可先查询可安装的版本,然后指定版本进行安装。
[root@k8smaster containerd]# yum list kubelet kubelet.x86_64 1.21.0-0 k8s
下面进行安装:
[root@k8smaster ~]# yum install -y kubelet-1.21.0-0 kubeadm-1.21.0-0 kubectl-1.21.0-0
然后将 kubelet 设置成开机启动:
[root@k8smaster ~]# systemctl daemon-reload && systemctl enable kubelet
8、初始化k8s集群
执行如下命令:
[root@master ~]#kubeadm config print init-defaults [root@master ~]#kubeadm config images list [root@master ~]# kubeadm config images list --kubernetes-version=v1.21.0 --image-repository swr.myhuaweicloud.com/iivey
其中:第一个命令用来查看安装k8s的相关信息,主要是安装源和版本。第二条命令是查询需要的镜像,从输出可在,默认是从k8s.gcr.io这个地址下载镜像,此地址国内无法访问,因此需要修改默认下载镜像的地址。第三条命令是设置k8s镜像仓库为华为云镜像站地址,查看一下需要下载的镜像都有哪些。
由此可知,通过kubeadm初始化集群,需要这7个镜像,由于gcr无法访问,因此,我将这些镜像统一放到了我的华为云仓库下。
接着,在 master 节点配置 kubeadm 初始化文件,可以通过如下命令导出默认的初始化配置:
[root@master ~]# kubeadm config print init-defaults > kubeadm.yaml
然后根据我们自己的需求修改配置,这里修改的有advertiseAddress、criSocket、name、imageRepository 的值,同时,添加了kube-proxy的模式为ipvs,,并且,需要注意的是,由于我们使用的containerd作为运行时,所以在初始化节点的时候需要指定cgroupDriver为systemd。
在保证所需要的镜像都可以正常下载后,使用上面的配置文件进行初始化:
[root@k8smaster ~]# kubeadm init --config=kubeadm.yaml
初始化完成,根据提示,在master节点执行如下操作
[root@k8smaster ~]# mkdir -p $HOME/.kube [root@k8smaster ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config [root@k8smaster ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
为了使用更便捷,启用 kubectl 命令的自动补全功能。
[root@master ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc
现在kubectl可以使用了
9、添加集群节点
初始化集群的操作是在master节点完成的,接下来,要将work节点加入到集群中,首先需要在每个node节点上执行基础配置工作,主要有关闭防火墙和selinux、禁用swap、配置主机名解析、启动网络桥接功能以及启动kubeket服务并设置开机自启,这些已经在前面介绍过,这里不再多说了。
下面介绍下如何添加nodes到集群中,执行如下命令:
[root@master ~]# kubeadm join 172.16.213.221:6443 --token bnefy8.d79yn6ylxlk7k8hr --discovery-token-ca-cert-hash sha256:eaa17f4b308e9406891f85f664c0d2c97a49bd9e963f64c9453b7042509e106c
这里的–token来自前面kubeadm init输出提示,如果当时没有记录下来可以通过如下命令找回, token是有24小时有效期的:
[root@master ~]# kubeadm token create --ttl 0 --print-join-command
执行成功后运行 get nodes 命令
[root@k8smaster ~]#kubectl get node
NAME STATUS ROLES AGE VERSION
k8smaster NotReady control-plane,master 29m v1.21.0
k8snode1 NotReady
可以看到是,两个节点都是NotReady 状态,这是因为还没有安装网络插件。
10、安装网络插件
接下来安装网络插件。网络插件可以选择calico和flannel,这里我们使用calico。
[root@k8smaster ~]# wget ~]# kubectl apply -f calico.yaml
此插件的安装过程,需要下载三个镜像文件,下载完成,网络插件即可正常工作。等网络插件镜像下载完成以后,看到node的状态会变成ready,执行如下命令查看:
[root@k8smaster ~]# kubectl get node
如果发现某个节点还是处于NotReady状态,可以重启此节点的kubelet服务,然后此节点就会重新下载需要的镜像。
最后,执行如下命令,查看pod状态:
[root@master ~]# kubectl get pods -n kube-system
11、在k8s集群中安装kubernetes-dashboard
kubernetes-dashboard是k8s的UI看板,可以查看、编辑整个集群状态。
可从下载最新的dashboard/资源文件,然后进行安装。
下载下来的文件名为recommended.yaml,默认情况下此文件中的几个镜像地址,国内无法访问,需要修改,为方便大家学习,我已经将此文件提供在学习资料中,大家下载下来即可直接使用。
执行如下命令进行安装:
kubectl apply -f recommended.yaml
安装完成后,执行如下命令,查看kubernetes-dashboard随机的访问端口:
[root@k8smaster ~]# kubectl get svc -n kubernetes-dashboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dashboard-metrics-scraper ClusterIP 10.98.184.182
此时,可以通过集群任意一个节点的ip加上32081端口访问kubernetes-dashboard 。
访问dashboard需要认证,因此还需要创建一个认证机制,执行如下命令,创建一个ServiceAccount用户dashboard-admin:
[root@master k8s]# kubectl create serviceaccount dashboard-admin -n kube-system serviceaccount/dashboard-admin created
然后将dashboard-admin用户与角色绑定:
[root@master k8s]# kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin clusterrolebinding.rbac.authorization.k8s.io/dashboard-admin created
最后,查看Token令牌,执行如下组合命令:
[root@master k8s]# kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
此命令输出中,token就是令牌,复制出来保存。有了令牌后,就可以在dashboard选择令牌登录了。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~