運維之k8s集羣搭建

用kubeadm部署K8s羣集

前提摘要:
        1、各節點時間同步; 
        2、各節點主機名稱解析:dns OR hosts 3 /etc/hosts
        3、各節點iptables及firewalld服務被disable

1:master(192.168.1.179) 組件:

https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

配置yum倉庫導入docker 下載docker-ce.repo
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

cd /etc/yum.repos.d/
vim k8s.repo   #配置kubetnetes倉庫
[k8s]
name=K8s Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
enabled=1

yum repolist 查看兩個倉庫是否能用

安裝docker-ce kubelet kubeadm kubectl

yum install docker-ce kubelet kubeadm kubectl -y 
如果有報錯 手動下載密鑰執行下面命令
wget https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
rpm --import yum-key.gpg

初始化docker啓動docker服務

 systemctl daemon-reload #重新加載文件
 systemctl start docker.service  #啓動docker
 systemctl enable docker.service  #設置開機自啓動
 systemctl enable kubelet.service 

 docker需要自動到docker倉庫去下載鏡像或者通過本地倉庫下載所依賴的每個鏡像文件
 1、通過docker自動下載依賴鏡像
 cd /usr/lib/systemd/system/docker.service
 在 # for containers run by docker  底下加入環境變量
 Environment="HTTPS_PROXY=http://www.ik8s.io:10080" 通過代理去訪問需要加載的鏡像文件
 Environment="NO_PROXY=127.0.0.0/8,172.20.0.0/16"
 2、手動下載依賴鏡像用
 kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.13.1
k8s.gcr.io/kube-controller-manager:v1.13.1
k8s.gcr.io/kube-scheduler:v1.13.1
k8s.gcr.io/kube-proxy:v1.13.1
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.2.24
k8s.gcr.io/coredns:1.2.6

下載命令
docker pull docker.io/mirrorgooglecontainers/kube-apiserver:v1.13.1       下載鏡像
docker tag docker.io/mirrorgooglecontainers/kube-apiserver:v1.13.1 k8s.gcr.io/kube-apiserver:v1.13.1         給鏡像打標籤

docker pull docker.io/mirrorgooglecontainers/kube-controller-manager:v1.13.1
docker tag docker.io/mirrorgooglecontainers/kube-controller-manager:v1.13.1 k8s.gcr.io/kube-controller-manager:v1.13.1

docker pull docker.io/mirrorgooglecontainers/kube-scheduler:v1.13.1
docker tag docker.io/mirrorgooglecontainers/kube-scheduler:v1.13.1 k8s.gcr.io/kube-scheduler:v1.13.1

docker pull docker.io/mirrorgooglecontainers/kube-proxy:v1.13.1
docker tag docker.io/mirrorgooglecontainers/kube-proxy:v1.13.1 k8s.gcr.io/kube-proxy:v1.13.1

docker pull docker.io/mirrorgooglecontainers/pause:3.1
docker tag docker.io/mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1

docker pull docker.io/mirrorgooglecontainers/etcd:3.2.24
docker tag docker.io/mirrorgooglecontainers/etcd:3.2.24 k8s.gcr.io/etcd:3.2.24

docker pull docker.io/coredns/coredns:1.2.6
docker tag docker.io/coredns/coredns:1.2.6 k8s.gcr.io/coredns:1.2.6
----------------------------------------------------------------------------- 

初始化kubelet

編輯kubelet的配置文件/etc/sysconfig/kubelet,設置其忽略Swap啓用的狀態錯誤,內容如下:
 KUBELET_EXTRA_ARGS="--fail-swap-on=false"

 設置kubelet開機自啓動
 systemctl enable kubelet.service

 初始化

 kubeadm init --kubernetes-version=v1.13.1 --pod-network-cidr=192.168.0.0/6 --service.cidr=192.168.1.0/12 --ignore-preflight-errors=Swap

 --kubernetes-version=v1.11.1     #被初始化的k8s版本
 --pod-network-cidr=10.244.0.0/16 #pod使用的網絡
 --service.cidr=10.96.0.0/12      #service使用的網絡地址
 --ignore-preflight-errors=Swap   #雙重否定部屬用用交換配置

 如果在初始化過程中有error報錯那麼就查看是什麼錯誤一般會報錯鏡像tag標籤錯誤找不到該鏡像  可以把鏡像重新打標籤

當如果看到下列內容則表示初始化成功

Your Kubernetes master has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir ~/.kube          #創建.kube文件一般會提示用普通用戶創建要有sudo權限這邊我直接用root用戶創建
  sudo cp /etc/kubernetes/admin.conf ~/.kube/ #複製admin.conf到./kube文件中
  sudo chown $(id -u):$(id -g) $HOME/.kube/config #把./kube的屬組屬主改爲創建用戶的屬組屬主
You should now deploy a pod network to the cluster.

Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of machines by running the following on each node
as root:

#用下列命令把node加入集羣中來(建議把下列命令保存起來)
  kubeadm join 192.168.1.179:6443 --token 5m7gg1.czd5td6itn9g2fhz --discovery-token-ca-cert-hash sha256:50c64cac88defae6beecf7bdde9b212094d7cc937b709b94f0baaeaaa4246e7e

用root用戶創建:
mkdir ~/.kube
cp /etc/kubernetes/admin.conf ~/.kube/
因爲應root用戶創建的就不用重新指定屬組屬主

kubectl get cs   #查看組件健康狀態
kubectl get nodes #查看個節點信息
NAME     STATUS   ROLES    AGE   VERSION
master   NotReady    master   19h   v1.13.1   #這邊顯示未開啓狀態因爲這邊少一個flannel插件

安裝flannel插件
https://github.com/coreos/flannel #flannel地址和幫助信息
圖片

#如果你要受用安裝就執行下面的命令就會自動執行安裝
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

#部署完之後再查看節點信息
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   19h   v1.13.1

#查看組件狀態信息(當前master運行的所有pod組件)
kubectl get pods -n kube-system
NAME                             READY   STATUS    RESTARTS   AGE
coredns-86c58d9df4-4frfz         1/1     Running   0          19h
coredns-86c58d9df4-hlr72         1/1     Running   0          19h
etcd-master                      1/1     Running   0          19h
kube-apiserver-master            1/1     Running   0          19h
kube-controller-manager-master   1/1     Running   0          19h
kube-flannel-ds-amd64-4c7jx      1/1     Running   0          19h
kube-flannel-ds-amd64-89m8l      1/1     Running   0          17h
kube-flannel-ds-amd64-rmxj9      1/1     Running   0          19h
kube-proxy-8pnqs                 1/1     Running   0          17h
kube-proxy-b4hlj                 1/1     Running   0          19h
kube-proxy-fzp2m                 1/1     Running   0          19h
kube-scheduler-master            1/1     Running   0          19h

#默認如果不指定名名稱空間則名稱空間kube-system
kubectl get ns
NAME          STATUS   AGE
default       Active   19h
kube-public   Active   19h
kube-system   Active   19h

#主節點初始化完成

node01 安裝初始化

如果用第一種方法讓docker自動下載依賴鏡像則複製master中docker.service文件到node01中
把master中的k8s.repo和下載的docker-ce的yum倉庫配置起來如果在yum過程中有報錯則按照master中的方法執行

yum install docker-ce kubelet kubeadm -y
1、開啓docker服務
2、把docker 、 kubelet設置開機自啓動

 systemctl start docker.service  #啓動docker
 systemctl enable docker.service  #設置開機自啓動
 systemctl enable kubelet.service 

手動下載
kube-proxy 、 pause 鏡像並打標籤通master中的下載鏡像配置

把node01節點加入集羣中去
用剛剛保存的kubeadm job命令
kubeadm join 192.168.1.179:6443 --token 5m7gg1.czd5td6itn9g2fhz --discovery-token-ca-cert-hash sha256:50c64cac88defae6beecf7bdde9b212094d7cc937b709b94f0baaeaaa4246e7e --ignore-preflight-errors=Swap #後面加入這句話

再主節點上kubectl get nodes 查看系欸但有沒有加入進來

kubectl get nodes
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   20h   v1.13.1
node01   Ready    <none>   19h   v1.13.1 #已經加入進來了

# node02跟node01做同樣步驟加入集羣
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章