K8S集群安装

  1. 借助ntp服务设定各节点主机时间精确同步
  2. 通过dns完成各节点主机名称解析,测试环境主机数量较少时也可以使用hosts文件进行
  3. 关闭各节点iptables,firewalld,并确保它们被禁止随系统引导过程启动
  4. 各节点禁用selinux
  5. 各节点禁用swap
  6. 若要使用ipvs模型的proxy,各节点还需要载入ipvs相关的各模块
设定时间同步
yum install -y ntpdate ntpdate ntp1.aliyun.com

关闭防火墙,selinux
systemctl stop firewalld systemctl disable firewalld setenforce 0 sed 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config -i

安装docker
yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache fast yum -y install docker-cesystemctl start docker && systemctl enable docker

修改内核参数
sysctl -a |grep bridge #net.bridge.bridge-nf-call-ip6tables = 1 #net.bridge.bridge-nf-call-iptables = 1cat < /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOFsysctl -p /etc/sysctl.d/k8s.conf

配置k8s yum源
cat < /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 EOFyum repolist -y yum list all |grep "^kube" yum install -y kubelet kubeadm kubectl#或者指定版本 yum install kubeadm-1.19.2 kubelet-1.19.2 kubectl-1.19.2

以下master操作,node不需要
检查能否正常初始化
kubeadm init --kubernetes-version="v1.19.2" --pod-network-cidr="10.244.0.0/16" --dry-run#有时候会失败,可关闭swap swapoff-a sed -ri 's/.*swap.*/#&/' /etc/fstab#或者通过参数设置忽略swap kubeadm init --ignore-preflight-errors=Swap sed -i 's/KUBELET_EXTRA_ARGS=/KUBELET_EXTRA_ARGS="--fail-swap-on=false"/' /etc/sysconfig/kubelet

查看需要哪些镜像
kubeadm config images list

pull镜像
kubeadm config images pull#如果pull失败,因为国家防火墙的原因。自动上传镜像 docker load -i xxx.tar.gz 上传完成后,直接初始化。 镜像在百度云'k8s1.19.2镜像'目录下面

正式初始化master
kubeadm init --kubernetes-version="v1.19.2" --pod-network-cidr="10.244.0.0/16"mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config

部署flannel网络
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 如果失败,改一下域名解析 cat < /etc/hosts 199.232.28.133 raw.githubusercontent.com EOF以下master node都操作systemctl start kubelet && systemctl enable kubeletnode节点 kubeadm join 172.31.7.59:6443 --token 4rfeds.ohk6lk2owqo60av8 \ --discovery-token-ca-cert-hash sha256:03dfb60ff5765107fee8e5a42880fe71bdcb801b4ff28b8268bb330e732f77e1

注:
node节点添加之后,master上面查看一下状态
kubectl get nodes
【K8S集群安装】如果一直处于NotReady状态的话,说明node没添加成功
查看一下pod状态
kubectl get pods -n kube-system
一般情况下,为node节点pull镜像失败,describe查看一下pod状态
kubectl describe pod PodName -n kube-system #注意,要加上-n 命名空间
查看哪个镜像没pull下来,到node节点上面手动上传即可
一般情况为flannel / pause / kube-proxy 这几个镜像
如果想改默认ip网段,需改初始化命令,和flannel配置文件。

    推荐阅读