1. 程式人生 > >單機版kubernetes1.13安裝

單機版kubernetes1.13安裝

build fall linu tab 搭建 package mon status 啟動系統

kubernetes,簡稱K8s,是用8代替8個字符“ubernete”而成的縮寫。是一個開源的,用於管理雲平臺中多個主機上的容器化的應用,Kubernetes的目標是讓部署容器化的應用簡單並且高效(powerful),Kubernetes提供了應用部署,規劃,更新,維護的一種機制。目前網上說的很多安裝方案要不就是版本太舊了,要不就是需要FQ,作者好不容易研究出一套完整的安裝方案。廢話少說,我們立刻開始吧。

環境:

系統:Centos7.5

內存:2G

硬盤:50G

操作步驟:

1.修改主機名

hostnamectl set-hostname  k8s-master

重啟動系統以便生效

reboot

2.安裝docker

安裝policycoreutils-python 
yum -y install policycoreutils-python*

下載並安裝container-selinux-2.68

wget http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.68-1.el7.noarch.rpm
rpm -ivh container-selinux-2.68-1.el7.noarch.rpm

安裝libltdl.so

yum install -y libltdl.so*

安裝pigz

yum install -y pigz*

下載並安裝docker1.18安裝包

wget https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm
rpm -ivh docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm

輸入docker -v打印以下信息表示安裝成功

[root@k8s-master software]# docker -v
Docker version 18.03.1-ce, build 9ee9f40

3.切換 k8s yum 源

vim /etc/yum.repos.d/kubernetes.repo

寫入以下內容

[kuberneten]
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

*因為目前政策原因,我們無法連接k8s.gcr.io去拉取鏡像,的以我們只能使用啊裏的鏡像倉庫,當然如果讀者有FQ工具則無需這步操作

緩存生效:

yum makecache

出現以下信息表示倉庫設置成功

Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
epel                                                                                                                                                                    | 3.2 kB  00:00:00     
extras                                                                                                                                                                  | 3.4 kB  00:00:00     
kuberneten                                                                                                                                                              | 1.4 kB  00:00:00     
os                                                                                                                                                                      | 3.6 kB  00:00:00     
updates                                                                                                                                                                 | 3.4 kB  00:00:00     
(1/14): epel/7/x86_64/prestodelta                                                                                                                                       |   75 B  00:00:00     
(2/14): extras/7/x86_64/prestodelta                                                                                                                                     | 100 kB  00:00:00     
(3/14): extras/7/x86_64/other_db                                                                                                                                        | 126 kB  00:00:00     
(4/14): extras/7/x86_64/filelists_db                                                                                                                                    | 603 kB  00:00:00     
(5/14): epel/7/x86_64/other                                                                                                                                             | 2.2 MB  00:00:00     
(6/14): kuberneten/filelists                                                                                                                                            |  14 kB  00:00:00     
(7/14): kuberneten/primary                                                                                                                                              |  39 kB  00:00:00     
(8/14): kuberneten/other                                                                                                                                                |  27 kB  00:00:00     
(9/14): updates/7/x86_64/prestodelta                                                                                                                                    | 679 kB  00:00:00     
(10/14): updates/7/x86_64/other_db                                                                                                                                      | 578 kB  00:00:00     
(11/14): os/7/x86_64/other_db                                                                                                                                           | 2.5 MB  00:00:00     
(12/14): updates/7/x86_64/filelists_db                                                                                                                                  | 3.4 MB  00:00:00     
(13/14): epel/7/x86_64/filelists                                                                                                                                        |  10 MB  00:00:00     
(14/14): os/7/x86_64/filelists_db                                                                                                                                       | 6.9 MB  00:00:00     
epel                                                                                                                                                                               12717/12717
epel                                                                                                                                                                               12717/12717
epel                                                                                                                                                                               12717/12717
kuberneten                                                                                                                                                                             284/284
kuberneten                                                                                                                                                                             284/284
kuberneten                                                                                                                                                                             284/284
Metadata Cache Created

4.設置網橋

sysctl net.bridge.bridge-nf-call-iptables=1

RHEL / CentOS 7系統由於iptables被繞過而導致流量被錯誤路由的問題。所以應該確保net.bridge.bridge-nf-call-iptables的sysctl配置中被設置為1

5.安裝 kubeadm 和相關工具

yum install -y kubelet kubeadm kubectl kubernetes-cni

查看安裝版本

[root@k8s-master software]# kubectl version
Client Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.3", GitCommit:"435f92c719f279a3a67808c80521ea17d5715c66", GitTreeState:"clean", BuildDate:"2018-11-26T12:57:14Z", GoVersion:"go1.10.4", Compiler:"gc", Platform:"linux/amd64"}
The connection to the server localhost:8080 was refused - did you specify the right host or port?

啟動docker和kuberctl

systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet

查看 kubeadm 會用到的鏡像

[root@k8s-master software]# kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.12.3
k8s.gcr.io/kube-controller-manager:v1.12.3
k8s.gcr.io/kube-scheduler:v1.12.3
k8s.gcr.io/kube-proxy:v1.12.3
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.2.24
k8s.gcr.io/coredns:1.2.2

可以看到目前已經升級到了1.12.3的版本了

拉取鏡像並設置tag

docker pull docker.io/mirrorgooglecontainers/kube-apiserver-amd64:v1.12.3
docker tag docker.io/mirrorgooglecontainers/kube-apiserver-amd64:v1.12.3 k8s.gcr.io/kube-apiserver:v1.12.3

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

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

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

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

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

docker pull docker.io/coredns/coredns:1.2.2
docker tag docker.io/coredns/coredns:1.2.2 k8s.gcr.io/coredns:1.2.2

對比一下鏡像名和版本號是否一致,否則會安裝失敗(紅色背景部分,tag和版本號都要一致)

[root@k8s-master software]# docker images
REPOSITORY                                             TAG                 IMAGE ID            CREATED             SIZE
mirrorgooglecontainers/kube-proxy-amd64                v1.12.3             ab97fa69b926        5 days ago          96.5MB
k8s.gcr.io/kube-proxy                                  v1.12.3             ab97fa69b926        5 days ago          96.5MB
mirrorgooglecontainers/kube-apiserver-amd64            v1.12.3             6b54f7bebd72        5 days ago          194MB
k8s.gcr.io/kube-apiserver                              v1.12.3             6b54f7bebd72        5 days ago          194MB
mirrorgooglecontainers/kube-controller-manager-amd64   v1.12.3             c79022eb8bc9        5 days ago          164MB
k8s.gcr.io/kube-controller-manager                     v1.12.3             c79022eb8bc9        5 days ago          164MB
mirrorgooglecontainers/kube-scheduler-amd64            v1.12.3             5e75513787b1        5 days ago          58.3MB
k8s.gcr.io/kube-scheduler                              v1.12.3             5e75513787b1        5 days ago          58.3MB
mirrorgooglecontainers/etcd-amd64                      3.2.24              3cab8e1b9802        2 months ago        220MB
k8s.gcr.io/etcd                                        3.2.24              3cab8e1b9802        2 months ago        220MB
coredns/coredns                                        1.2.2               367cdc8433a4        3 months ago        39.2MB
k8s.gcr.io/coredns                                     1.2.2               367cdc8433a4        3 months ago        39.2MB
mirrorgooglecontainers/pause-amd64                     3.1                 da86e6ba6ca1        11 months ago       742kB
k8s.gcr.io/pause                                       3.1                 da86e6ba6ca1        11 months ago       742kB
[root@k8s-master software]# 
[root@k8s-master software]# 
[root@k8s-master software]# kubeadm config images list
I1202 11:29:39.251650    3916 version.go:93] could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.txt": Get https://storage.googleapis.com/kubernetes-release/release/stable-1.txt: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
I1202 11:29:39.251711    3916 version.go:94] falling back to the local client version: v1.12.3
k8s.gcr.io/kube-apiserver:v1.12.3
k8s.gcr.io/kube-controller-manager:v1.12.3
k8s.gcr.io/kube-scheduler:v1.12.3
k8s.gcr.io/kube-proxy:v1.12.3
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.2.24
k8s.gcr.io/coredns:1.2.2

初始化k8s

kubeadm init  --kubernetes-version=1.12.3  --pod-network-cidr=10.244.0.0/16

看到以下信息表示安裝成功

Your Kubernetes master has initialized successfully!

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

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

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:

kubeadm join 10.104.230.95:6443 --token u5k24m.no52g5zx4qtcmzfx --discovery-token-ca-cert-hash sha256:571c3581a2c88eed50156b8c720d179d0499660643907fc0cb2cc5a940292694

執行下面的命令進行配置:

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

Master 節點默認不參與工作負載,可以執行下面的命令來搭建一個 all-in-one 的 kubernetes 環境。

kubectl taint nodes --all node-role.kubernetes.io/master-

查看node運行狀態

[root@k8s-master software]# kubectl get nodes
NAME         STATUS     ROLES    AGE     VERSION
k8s-master   NotReady   master   3m39s   v1.12.3

發現是NotReady狀態,這是因為cni 網絡插件沒有安裝的原因

安裝 cni 網絡插件。

docker pull quay.io/coreos/flannel:v0.10.0-amd64 
mkdir -p /etc/cni/net.d/
vi /etc/cni/net.d/10-flannel.conf
{"name":"cbr0","type":"flannel","delegate": {"isDefaultGateway": true}}

mkdir /usr/share/oci-umount/oci-umount.d -p
mkdir /run/flannel/
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml

查看系統pod運行狀態

[root@k8s-master ~]# kubectl get pods -n kube-system
NAME                                 READY   STATUS    RESTARTS   AGE
coredns-576cbf47c7-cpd4t             1/1     Running   1          4m22s
coredns-576cbf47c7-m46n6             1/1     Running   1          4m22s
etcd-k8s-master                      1/1     Running   0          3m45s
kube-apiserver-k8s-master            1/1     Running   0          3m23s
kube-controller-manager-k8s-master   1/1     Running   0          3m37s
kube-flannel-ds-bzql2                1/1     Running   0          2m7s
kube-proxy-7t97x                     1/1     Running   0          4m22s
kube-scheduler-k8s-master            1/1     Running   0          3m32s

可以看到所有pod都處於Running表示運行成功

再次查看node運行狀態

[root@k8s-master ~]# kubectl get nodes
NAME         STATUS   ROLES    AGE     VERSION
k8s-master   Ready    master   6m20s   v1.12.3

發現處於Ready狀態,表示kubernetes單機版本部署成功

* 有時候會遇到一些奇怪問題,這時候需要查看詳細信息可運行以下命令

journalctl -f -u kubelet

最後希望大家都能順利安裝成功

來源:https://my.oschina.net/u/731542/blog/2966427

配合:https://www.cnblogs.com/huhyoung/p/9739027.html

單機版kubernetes1.13安裝