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-ce

systemctl start docker && systemctl enable docker

修改内核参数

sysctl -a |grep bridge
#net.bridge.bridge-nf-call-ip6tables = 1
#net.bridge.bridge-nf-call-iptables = 1

cat < /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl -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
EOF

yum 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 kubelet


node节点
kubeadm join 172.31.7.59:6443 --token 4rfeds.ohk6lk2owqo60av8 \
    --discovery-token-ca-cert-hash sha256:03dfb60ff5765107fee8e5a42880fe71bdcb801b4ff28b8268bb330e732f77e1

注:

node节点添加之后,master上面查看一下状态
kubectl get nodes

如果一直处于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配置文件。

你可能感兴趣的:(K8S集群安装)