Kubernetes集群安装

前期规划

网络信息

主机名 IP地址
kubernetes-master 192.168.2.100
kubernetes-slave1 192.168.2.101
kubernetes-slave2 192.168.2.102

系统信息

  • CentOS Linux release 7.6.1810 (Core)

系统配置

配置NTP时间同步

yum -y install ntp
#启动ntp服务
systemctl enable ntpd && systemctl start ntpd
#ntp同步
ntpd

添加hosts解析

cat >>/etc/hosts<<EOF
192.168.2.100   kubernetes-master
192.168.2.101   kubernetes-slave1
192.168.2.102   kubernetes-slave2
EOF

关闭swap(官方推荐)

swapoff -a
# 防止开机自动挂载 swap 分区
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

关闭selinux和防火墙

sed -ri 's#(SELINUX=).*#\1disabled#' /etc/selinux/config
setenforce 0
systemctl disable firewalld && systemctl stop firewalld

修改内核参数

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
vm.max_map_count=262144
EOF
modprobe br_netfilter
# 重新加载内核参数
sysctl -p /etc/sysctl.d/k8s.conf

配置yum源

#清理当前配置
mkdir -p /etc/yum.repos.d/yumbak
mv /etc/yum.repos.d/*.repo  /etc/yum.repos.d/yumbak/
#get-阿里yum源
curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#配置kubernetes源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
        http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
#清理yum缓存
yum clean all && yum makecache

安装集群服务

安装Docker

# 安装docker-ce
yum install docker-ce
## 自启动docker
systemctl enable docker && systemctl start docker

配置Docker加速

查询加速器地址

配置加速

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://5pwajwzh.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload && systemctl restart docker

安装kubernetes

安装 kubeadm, kubelet 和 kubectl

#通过yum安装,默认为最新版本
yum install -y kubelet-1.16.2 kubeadm-1.16.2 kubectl-1.16.2 --disableexcludes=kubernetes
#查看kubeadm版本
kubeadm version
#设置kubelet自启动
systemctl enable kubelet && systemctl start kubelet

初始化Master配置

只需要在master节点上运行

#导出init配置
[root@kubernetes-master ~]# kubeadm config print init-defaults > kubeadm.yaml

#查看并修改配置文件(修改后保存,后续初始化配置)
[root@kubernetes-master ~]# cat kubeadm.yaml 
apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
#以下地址修改为masterIP
  advertiseAddress: 192.168.2.100
  bindPort: 6443
nodeRegistration:
  criSocket: /var/run/dockershim.sock
  imagePullPolicy: IfNotPresent
  #此处需要修改为master的主机名
  name: node
  taints: null
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
  local:
    dataDir: /var/lib/etcd
#修改image源为阿里源
imageRepository:  registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: 1.23.0
networking:
  dnsDomain: cluster.local
  #新增POD网段,后期flannel插件服务需要使用
  podSubnet: 10.244.0.0/16 
  serviceSubnet: 10.96.0.0/12
scheduler: {}

缓存镜像文件

# 查看需要使用的镜像列表
kubeadm config images list --config kubeadm.yaml

# 提前下载镜像到本地
# 如果失败多试几次即可
kubeadm config images pull --config kubeadm.yaml

运行初始化yaml文件

kubeadm init --config kubeadm.yaml


按照以上提示启动 cluster:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Slave节点加入Cluster

所有的slave节点(k8s-slave)需要执行,实际ID按照上一条最后的内容替换

kubeadm join 192.168.2.100:6443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:0b9b8a502f6ed641208ca1fc9a928bbd424d11886705a90ad52230710382d6b6 

最后在master上get一下状态,此为成功;

Master上安装插件

安装flannel插件

wget https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml

修改配置,指定网卡名称,大概在文件的190行,添加一行配置

vi kube-flannel.yml
      containers:
      - name: kube-flannel
        image: 172.21.51.67:5000/coreos/flannel:v0.11.0-amd64
        command:
        - /opt/bin/flanneld
        args:
        - --ip-masq
        - --kube-subnet-mgr
        - --iface=ens33  # 如果机器存在多网卡的话,指定内网网卡的名称,默认不指定的话会找第一块网
        resources:
          requests:
            cpu: "100m"

(可选)修改flannel镜像地址,以防默认的镜像拉取失败,同样是在170和190行上下的位置

vi kube-flannel.yml
      containers:
      - name: kube-flannel
        image: 172.21.51.67:5000/coreos/flannel:v0.11.0-amd64
        command:
        - /opt/bin/flanneld
        args:
        - --ip-masq
        - --kube-subnet-mgr
        - --iface=ens33  # 如果机器存在多网卡的话,指定内网网卡的名称,默认不指定的话会找第一块网
        resources:
          requests:
            cpu: "100m"

执行安装flannel网络插件

# 先拉取镜像,速度比较慢
docker pull quay.io/coreos/flannel:v0.11.0-amd64
# 执行flannel安装
kubectl create -f kube-flannel.yml

验证集群状态

kubectl get nodes
kubectl -n kube-system get po

异常处理

重装flannel插件

#重置master
rm -rf $HOME/.kube
kubeadmin reset
systemctl stop docker && systemctl stop kubelet
#重新加载flanner插件
kubectl apply -f  https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
posted @ 2022-01-11 13:58  红茶课堂  阅读(111)  评论(0)    收藏  举报