通过kubeadm安装k8s
k8s安装与升级kubeadm升级k8s
基础环境介绍
节点名 | IP | 系统 | 配置 |
master | 192.168.235.10 | Centos7 2009 | 4CPU 2G内存 30G硬盘 |
node1 | 192.168.235.11 | Centos7 2009 | 4CPU 2G内存 30G硬盘 |
node2 | 192.168.235.12 | Centos7 2009 | 4CPU 2G内存 30G硬盘 |
配置环境
安装包 | 升级前版本 | 升级后版本 |
docker-ce | 18.09.1 | 20.10.12 |
docker-ce-cli | 18.09.1 | 20.10.12 |
kubeadmin | 1.18.20 | 1.23.1 |
kubectl | 1.18.20 | 1.23.1 |
kubelet | 1.18.20 | 1.23.1 |
一、初始化环境
三台同步操作
1、安装阿里系统源和kubernetes源
#备份源文件
[root@master ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
#下载生产新源文件 [root@master ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
#创建阿里的kubernetes源
[root@master ~]#cat <<EOF > /etc/yum.repos.d/kubernetes.repo [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
#清理缓存
[root@master ~]# yum clean all
2、安装NTP并设置时间同步,同时顺带安装vim和wget
[root@master ~]# yum -y install ntpdate vim wget
#同步到阿里云时间服务器
[root@master ~]# ntpdate ntp.aliyun.com
3、关闭防火墙和SELinux
#关闭防火墙和防火墙的开机自启
[root@master ~]# systemctl stop firewalld && systemctl disable firewalld
#关闭SELinux [root@master ~]# vim /etc/selinux/config SELINUX=disabled
[root@master ~]# setenforce 0
4、设置hosts文件
[root@master ~]# echo "192.168.235.10 master 192.168.235.11 node1 192.168.235.12 node2" >> /etc/hosts
5、修改k8s.conf文件
[root@master ~]# cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF
[root@master ~]# sysctl --system
6、安装docker
#安装依赖环境
[root@master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
#添加docker阿里源
[root@master ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@master ~]# sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
[root@master ~]# yum makecache fast
[root@master ~]# yum -y install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io [root@master ~]# systemctl start docker && systemctl enable docker
7、更换docker镜像下载源
[root@master ~]# echo '{"registry-mirrors":["https://registry.docker-cn.com"]}' > /etc/docker/daemon.json
8、关闭swap分区
[root@master ~]# vim /etc/fstab #/dev/mapper/centos-swap swap swap defaults 0 0 [root@master ~]# swapoff -a
确认swap分区为0
9、安装kube工具并为kubelet添加开机启动
不要开启kubelet!不要开启kubelet!不要开启kubelet!
[root@master ~]# yum install kubelet-1.18.20 kubeadm-1.18.20 kubectl-1.18.20
[root@master ~]# systemctl enable kubelet
二、Master节点部署
1、初始化master节点
kubeadm init \
#设置api的主机,这里是master节点
--apiserver-advertise-address=192.168.235.10 \
#设置下载镜像的源,这里是阿里的源
--image-repository registry.aliyuncs.com/google_containers \
#设置下载的kubernetes版本
--kubernetes-version v1.18.20 \
#设置集群内部使用的地址段,不要访问外网
--service-cidr=10.96.0.0/12 \
#设置容器使用的地址段,不要与其他网络地址冲突
--pod-network-cidr=10.244.0.0/16
[root@master ~]# kubeadm init --apiserver-advertise-address=192.168.235.10 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.20 \ --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
#如果初始化失败,可以使用 kubeadm reset重置,然后删除$HOME/.kube/config中的文件即可重新初始化
2、开始使用你的集群,你需要以普通用户的身份运行以下命令:
[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
3、查看master节点信息
[root@master ~]# kubectl get node
#查看pod [root@master ~]# kubectl get pods
#查看kube系统默认运行的容器
[root@master ~]# kubectl get pods -n kube-system
4、安装Pod网络插件
如果https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml无法正常连接,可以直接用浏览器浏览然后下载另存为kube-flannel.yml,传到服务器,请务必保持文本中内容的格式。
[root@master ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
查看coredns是否启动
[root@master ~]# kubectl get pods -n kube-system
三、加入节点
1、将node节点加入集群,此步骤在各个node节点中操做一遍,此处的token是master节点初始化时自动生成的(即第二大步骤,第1步生成),token不要复制本文的,每个人的都不同
kubeadm join 192.168.235.10:6443 --token 4tma0s.2rzqfq118xerboc2 \ --discovery-token-ca-cert-hash sha256:b9750ec3d5d365b7e7b98d24791ca3001323c4d5abbacd0f79d4a9a9562c786c
2、回到主节点查看集群是否成功加入和准备完毕,如果未准备完毕,等待即可
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8smaster01 Ready control-plane,master 16h v1.18.20
k8snode01 Ready <none> 16h v1.18.20
k8snode02 Ready <none> 16h v1.18.20
四、安装dashboard面板(master节点上操作)
1、下载资源配置清单
如果https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml无法正常连接,可以直接用浏览器浏览然后下载另存为recommended.yaml,传到服务器,请务必保持文本中内容的格式。
[root@master ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
2、修改部分配置
[root@master ~]# vim recommended.yaml
#第一处(注意大小写和空格)
#第二处
3、下载镜像
[root@master ~]# docker pull kubernetesui/dashboard:v2.0.0-beta8
4、根据配置资源清单创建dashboard镜像
[root@master ~]# kubectl apply -f recommended.yaml
5、查看dashboard的pod和service状态
#等待所有pod就绪
[root@master ~]# kubectl get pods,svc -n kubernetes-dashboard -o wide
6、生成token
#创建dashboard用户dashboard-admin
[root@master ~]# kubectl create serviceaccount dashboard-admin -n kube-system
#授权集群管理权限给dashboard-admin账户(即:为dashboard-admin账户选择角色和授权)
[root@master ~]# kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
#查看dashboard-admin的token
[root@master ~]# kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
7、登录Dashboard面板
https://192.168.235.10:30001
登录web界面,建议使用火狐浏览器,添加例外后就能正常打开,谷歌和edge会拒绝访问,即便添加到安全信任也被拒绝
五、升级K8S到最新版本
生产环境请慎重考虑,测试环境如果时虚拟机请先创建快照再操作
1、master节点使用如下步骤升级
不可以直接使用yum update升级到最新安装包,会造成API通讯异常,可以kubeadm upgrade plan命令通过查看,同时版本信息中也会有告警
[root@master1 ~]# kubectl version
WARNING: version difference between client (1.23) and server (1.17) exceeds the supported minor version skew of +/-1
翻译过来就是:客户端(1.23)和服务器(1.17)的版本差异超过了支持的版本倾斜+/-1个小版本,即1.XX
如果已经使用update命令升级了kube三套件,可以使用yum downgrade kubeadm-1.XX.XX,降低到指定版本,最好是初始化版本下个版本的最终版,本文中是1.8.20查阅后发现下一个版本最终版是1.19.5版
#查看版本升级计划
kubeadm upgrade plan
#安装对应版本的kubeadm
yum update -y kubeadm-1.19.5
#升级版本,升级过程中会有询问确认是否升级,输入y即可
kubeadm upgrade apply v1.19.5
#继续升级下一个版本的Latest version,因为跨越了大版本,所以没有办法通过kubeadm upgrade plan命令查看,直接安装如下版本的kubeadm即可,不能跨越2个小版本(即1后面的数据相差不能大于等于2)升级!不能跨越2个小版本升级!不能跨越2个小版本升级!
yum update -y kubeadm-1.20.14
kubeadm upgrade apply v1.20.14
#1.21的最终版是1.21.8
yum install -y kubeadm-1.21.8
kubeadm upgrade apply v1.21.8,如此循环直到升级到需要的版本
#每个大版本的最终版本可以直接访问如下链接进行查询
https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/Packages/
2、升级2个node节点
[root@master ~]# kubeadm upgrade node config --kubelet-version 1.23.1
3、查看升级后的各节点信息
[root@master ~]# kubectl get node -o wide
#查看版本信息,告警已经消失
[root@master ~]# kubectl version
4、使用命令删除旧的容器三个节点都操作
使用kubeadm upgrade plan一般不会将容器停止,而是直接删除并重新创建。
[root@master ~]# docker container rm $(docker ps -a |grep Exited |awk -b '{print $1}')
5、重新登录Dashboard面板,不需要重新创建token,Ctrl+F5强制刷新页面输入原来的token即可
更多推荐
所有评论(0)