0. 前置准备
准备好3台服务器,一台作为master,另外两台作为worker节点。 3台服务器网络互通,os是centos-7.9
1. 设置服务器操作
- 关闭服务器防火墙:systemctl stop firewalld
- 永久关闭selinux:sed -i 's/enforcing/disabled/' /etc/selinux/config
- 关闭swap:swapoff -a
- 设置主机名:hostnamectl set-hostname myk8s-master(三台服务器都分别设置)
- 在master上设置worker的解析。
- cat >> /etc/hosts << EOF 192.168.32.128 k8s-master 192.168.32.129 k8s-node1 192.168.32.130 k8s-node2 EOF
- 将桥接的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
- 时间同步:yum install ntpdate -y ntpdate time.windows.com
2. 安装docker
3. 安装docker-compose(非必须)
4.安装kubeadmin、kubectl和kubelet
查看安装包:
手动下载镜像:
5. 初始化master
创建配置文件kubeadm-init.yaml文件,具体的参数介绍可见:kubeadm init | Kubernetes
kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --apiserver-advertise-address 172.16.242.129 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.1.0.0/16 --ignore-preflight-errors=all
遇到错误:
解决办法:
6.在master节点使kubectl生效
7. 安装网络插件Calico
8. 让主节点参与调用
默认情况下,主节点不参与pod调用,在集群资源有限的情况下,可以主动去掉主节点的标记,让其参与调用。
9. worker节点加入集群
10. 创建一个pod验证
先介绍pod和deployment的区别:
Pod和Deployment都是Kubernetes API中的完整对象。Deployment通过ReplicaSet管理创建Pod。它归结为Deployment将使用模板中的规范创建Pod。
一定要先确定集群支持的版本,可通过命令kubectl api-versions
11. 跨版本升级一个k8s集群
1) 要升级哪些内容
- 控制面板节点
- worker nodes
- kubeadm
- kubelet
- kubectl
2)升级master node
3)升级worker节点
12. 高可用k8s集群
因为k8s本身worker节点是多个,并且是无状态的,天然存在可用性保证。 所以集群的高可用落地到master集群。
第一种模式:master和分布式数据库etcd部署在一起。
第二种模式:etcd和master分开部署