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

浙公网安备 33010602011771号