kubernetes 1.15.2版本安装日志

  1. 准备工作,准备3台服务器或虚拟机,1台master  2台worker
master:192.168.2.177
node1:192.168.2.168
node2:192.168.2.251
  1. 每个节点为搭建K8s初始化系统
#临时关闭selinux(enforcing表示使用,disable为禁用状态,Permissive为临时关闭,/etc/selinux/config中disabled之后重启才会永久关闭。这边我们修改好即可,不需要重启)
setenforce 0 
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
#关闭交换分区
swapoff -a 
#手动注释swap或执行sed
sed -i 's/\/dev\/mapper\/centos-swap/#\/dev\/mapper\/centos-swap/g' /etc/fstab
  1. 各节点关闭iptables及firewalld服务
systemctl stop firewalld && systemctl disable firewalld
  1. 各节点修改hosts
# vi /etc/hosts
192.168.2.177 master
192.168.2.168 node1
192.168.2.251 node2
  1. 各节点添加kubernetes repo源
cat > /etc/yum.repos.d/kubernetes.repo <<EOF 
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
EOF
  1. 各节点添加docker源和安装docker、kubernetes1.15.2

 

#获取阿里云docker的yum源
wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
#yum安装docker-ce 
yum -y install epel-release
yum clean all
yum makecache
yum install -y docker-ce-18.09.0-3.el7.x86_64  kubelet-1.15.2 kubeadm-1.15.2 kubectl-1.15.2
#启动docker并设置开机自启动
systemctl start docker && systemctl enable docker
#配置docker镜像加速器(可用自己阿里云镜像加速)
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://y1sqk86x.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
  1. master上进行初始化,此时它会拉取k8s.gcr.io的镜像.

默认的DNS地址是10.96.0.10

修改service-cidr有可能导致无法解析

--service-cidr=10.96.0.0/12 #指定service的子网,用于绑定pod,提供固定ip端口给外部访问

--pod-network-cidr=10.244.0.0/16 #指定pod的子网,会随着容器创建销毁而改变

--ignore-preflight-errors 这个参数会跳过对docker-ce的版本检查

 kubeadm init --apiserver-advertise-address=192.168.2.177 \
  --kubernetes-version=v1.15.2 \
  --pod-network-cidr=10.244.0.0/16 \
  --service-cidr=10.96.0.0/12 \
  --ignore-preflight-errors=Swap

 

  1. 没想到的是我这边报错了(从k8s.gcr.io拉取镜像失败,应该是被墙了的缘故)

    1. 于是通过笨方法 必应 (手动拉取阿里云上的镜像仓库中对应版本镜像,并指定版本,目前repo源中获取到的版本是1.15.2,于是根据报错的版本一一对应下载即可)
    2. (当然还有其他解决方案,借助阿里云快的镜像仓库速获取gcr.io上的镜像https://blog.csdn.net/yjf147369/article/details/80290881
docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.15.2 
docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.15.2
docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.15.2
docker pull mirrorgooglecontainers/kube-proxy:v1.15.2
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd:3.3.10
docker pull coredns/coredns:1.3.1
    1. 拉取完成后,重新打个tag为k8s.gcr.io
docker tag  registry.aliyuncs.com/google_containers/kube-apiserver:v1.15.2 k8s.gcr.io/kube-apiserver:v1.15.2 
docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.15.2 k8s.gcr.io/kube-controller-manager:v1.15.2
docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.15.2 k8s.gcr.io/kube-scheduler:v1.15.2
docker tag mirrorgooglecontainers/kube-proxy:v1.15.2 k8s.gcr.io/kube-proxy:v1.15.2
docker tag mirrorgooglecontainers/pause:3.1  k8s.gcr.io/pause:3.1
docker tag mirrorgooglecontainers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
    1. 因为一开始初始化失败了,所以再次进行初始化
#如果初始化失败的话,则清空初始化信息,
kubeadm reset
#删除配置文件
rm -rf $HOME/.kube
#再次初始化
 kubeadm init --apiserver-advertise-address=192.168.2.177 \
  --kubernetes-version=v1.15.2 \
  --pod-network-cidr=10.244.0.0/16 \
  --service-cidr=10.96.0.0/12 \
  --ignore-preflight-errors=Swap \
  --ignore-preflight-errors=docker
    1. 初始化成功后复制创建配置文件路径并复制配置文件
 mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
    1. 安装Flannel网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  1. 添加node节点,证书为初始化主节点的时候生成的参数(如果没记录下来,可以使用命令 kubeadm token create --print-join-command 方法重新生成链接Token并打印输出加入命令
kubeadm join 192.168.2.177:6443 --token htym3e.0tqqeeqdrep9aat3 \
    --discovery-token-ca-cert-hash sha256:e0181c7691ecfb2dd763fbcc72326a58ae418c870c991e640db137a766fe2824
  1. 安装过程遇到的问题
①初始化报错/etc/hosts解析不对,检查hosts文件
②安装完网络插件查看节点pod详细状态#coredns 一直处于ContainerCreating
根据 journalctl -u kubelet -f 查看日志 /opt/cni/bin/下的bridge、dhcp、flannel、host-devic、host-local、ipvlan、loopback、macvlan、portmap、
ptp、sample、tuning、vlan 二进制文件丢失或者未正常创建,通过github上下载或者访问自行下载即可
https://www.legendchinese.cn/source/Centos7_installation/k8s/opt_cni_bin/
③其他报错https://blog.csdn.net/wayne_primes/article/details/99326584
  1. 清理环境(如果安装有问题的话,可以重装,慎重执行
systemctl stop kubelet
docker rm -f -v $(docker ps  -a -q)

rm -rf /etc/kubernetes
rm -rf  /var/lib/etcd
rm -rf   /var/lib/kubelet
rm -rf  $HOME/.kube/config
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

yum reinstall -y kubelet
systemctl daemon-reload
systemctl restart docker
systemctl enable kubelet
  1. 相关命令
#获取需要的镜像列表
kubeadm config images list
#打印出默认配置,然后在根据自己的环境修改配置
kubeadm config print init-defaults
#.如果初始化失败的话,则清空初始化信息,
kubeadm reset

#查看集群信息componentstatus 查看组件状态
kubectl get cs 
#查看节点状态
kubectl get nodes
#进入master查看节点pod详细状态
kubectl get pods --all-namespaces -o wide
#查看pods所有命名空间
kubectl get pods --all-namespaces
#查看pods的命名空间kube-sysytem,集群的pods一般都放在kube-sysytem下
 kubectl get pods -n kube-system
 #查看某个异常pod
  kubectl describe pod kube-flannel-ds-amd64-6vvp7 -n kube-system
 #查看命名空间 namespace
  kubectl get ns
  #发现节点n1状态为不可被调度,查看详细信息
kubectl describe node n1
  #修改unschedulable为false,如下n1已变成可被调度状态
kubectl patch node n1 -p'{"spec":{"unschedulable":false}}'
#查看相关系统日志
journalctl  -u kubelet  -xe   | grep cni
journalctl -u kubelet -n 1000
  1. 安装过程就到这里了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章