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. 安裝過程就到這裏了。

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