CentOS7 使用 kubeadm 搭建 k8s 集群


一 安裝Docker-CE

前言

Docker 使用越來越多,安裝也很簡單,本次記錄一下基本的步驟。

Docker 目前支持 CentOS 7 及以后的版本,內核要求至少為 3.10。

Docker 官網有安裝步驟,本文只是記錄一下,您也可以參考 Get Docker CE for CentOS

環境說明

CentOS 7(Minimal Install)

$ cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) 

准備工作

操作系統要求

CentOS 7 以后都可以安裝 Docker 了,也可以確認一下。

$ uname -a
Linux localhost.localdomain 3.10.0-957.1.3.el7.x86_64 #1 SMP Thu Nov 29 14:49:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux 

Docker 需要用到 centos-extra 這個源,如果您關閉了,需要重啟啟用,可以參考 Available Repositories for CentOS

卸載舊版本

舊版本的 Docker 被叫做 docker 或 docker-engine,如果您安裝了舊版本的 Docker ,您需要卸載掉它。

$ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine 

舊版本的內容在 /var/lib/docker 下,目錄中的鏡像(images), 容器(containers), 存儲卷(volumes), 和 網絡配置(networks)都可以保留。

Docker CE 包,目前的包名為 docker-ce

安裝

安裝准備

為了方便添加軟件源,支持 devicemapper 存儲類型,安裝如下軟件包

$ sudo yum update $ sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 

添加 yum 軟件源

添加 Docker 穩定版本的 yum 軟件源

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo 

安裝 Docker

更新一下 yum 軟件源的緩存,並安裝 Docker。

$ sudo yum update $ sudo yum install docker-ce 

如果彈出 GPG key 的接收提示,請確認是否為 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35,如果是,可以接受並繼續安裝。

至此,Docker 已經安裝完成了

如果你是root用戶 直接跳到下邊 啟動 Docker

Docker 服務是沒有啟動的,操作系統里的 docker 組被創建,但是沒有用戶在這個組里。

注意

默認的 docker 組是沒有用戶的(也就是說需要使用 sudo 才能使用 docker 命令)。
您可以將用戶添加到 docker 組中(此用戶就可以直接使用 docker 命令了)。

加入 docker 用戶組命令

$ sudo usermod -aG docker USER_NAME

用戶更新組信息后,重新登錄系統即可生效。

安裝指定版本

如果想安裝指定版本的 Docker,可以查看一下版本並安裝。

$ yum list docker-ce --showduplicates | sort -r docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable 

可以指定版本安裝,版本號可以忽略 : 和 el7,如 docker-ce-18.09.1

$ sudo yum install docker-ce-<VERSION STRING> 

至此,指定版本的 Docker 也安裝完成,同樣,操作系統內 docker 服務沒有啟動,只創建了 docker 組,而且組里沒有用戶。

啟動 Docker

如果想添加到開機啟動

$ sudo systemctl enable docker 

啟動 docker 服務

$ sudo systemctl start docker 

驗證安裝

驗證 Docker CE 安裝是否正確,可以運行 hello-world 鏡像

$ sudo docker run hello-world

可以使用命令查看hello-world鏡像是否被拉去下來

$ docker images

更新和卸載 Docker

使用 yum 管理,更新和卸載都很方便。

更新 Docker CE

$ sudo yum update docker-ce 

卸載 Docker CE

$ sudo yum remove docker-ce 

刪除本地文件

注意,docker 的本地文件,包括鏡像(images), 容器(containers), 存儲卷(volumes)等,都需要手工刪除。默認目錄存儲在 /var/lib/docker

$ sudo rm -rf /var/lib/docker 

二 安裝Shadowsocks客戶端

1.安裝客戶端

yum -y install epel-release yum -y install python-pip pip install shadowsocks 

此時使用pip安裝的是shadowsocks 2.8.2,比版本不支持aes-256-gcm加密方式,會報“method aes-256-gcm not supported ”的錯

所以我們執行以下命令升級

pip install https://github.com/shadowsocks/shadowsocks/archive/master.zip -U 

2.配置Shadowsocks客戶端

新建配置文件

 mkdir /etc/shadowsocks vim /etc/shadowsocks/shadowsocks.json 

添加如下信息

{
    "server":"1.1.1.1", "server_port":1035, "local_address": "127.0.0.1", "local_port":1080, "password":"password", "timeout":300, "method":"aes-256-cfb", "fast_open": false, "workers": 1 } 

配置自啟動
新建啟動腳本文件

vim /etc/systemd/system/shadowsocks.service 

添加內容如下:

[Unit] Description=Shadowsocks [Service] TimeoutStartSec=0 ExecStart=/usr/bin/sslocal -c /etc/shadowsocks/shadowsocks.json [Install] WantedBy=multi-user.target 

啟動Shadowsocks客戶端

systemctl enable shadowsocks.service systemctl start shadowsocks.service systemctl status shadowsocks.service 

驗證Shadowsocks客戶端是否正常運行

curl --socks5 127.0.0.1:1080 http:*//httpbin.org/ip* 

若Shadowsock客戶端已正常運行,則結果如下:

{
  "origin": "x.x.x.x" #你的Shadowsock服務器IP } 

三 安裝配置Privoxy

1.安裝Privoxy

yum -y install privoxy systemctl enable privoxy systemctl start privoxy systemctl status privoxy 

2.配置Privoxy

1.修改配置文件

vim /etc/privoxy/config 

確保如下內容沒有被注釋掉

listen-address 127.0.0.1:8118 # 8118 是默認端口,不用改 forward-socks5t / 127.0.0.1:1080 . #轉發到本地端口,注意最后有個點 

2.設置http/https代理

vim  /etc/profile 

添加如下信息

PROXY_HOST=127.0.0.1
export all_proxy=http://$PROXY_HOST:8118 export ftp_proxy=http://$PROXY_HOST:8118 export http_proxy=http://$PROXY_HOST:8118 export https_proxy=http://$PROXY_HOST:8118 export no_proxy=localhost,172.16.0.0/16,192.168.0.0/16.,127.0.0.1,10.10.0.0/16 

導入下環境

source /etc/profile 

3.測試

curl www.google.com 

四 其他配置

關閉 Swap

sudo swapoff -a #要永久禁掉swap分區,打開如下文件注釋掉swap那一行 # sudo vi /etc/fstab 

關閉 SELinux

# 臨時禁用selinux # 永久關閉 修改/etc/sysconfig/selinux文件設置 sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux # 這里按回車,下面是第二條命令 setenforce 0 

配置轉發參數

# 配置轉發相關參數,否則可能會出錯 cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 vm.swappiness=0 EOF # 這里按回車,下面是第二條命令 sysctl --system 

五 安裝 Kuberentes

安裝 kubeadm,kubelet,kubectl

kubeadm —— 啟動 k8s 集群的命令工具
kubelet —— 集群容器內的命令工具
kubectl —— 操作集群的命令工具
注意:所有機器都需安裝docker, kubeadm, kubelet和kubectl

配置docker代理 —————-全局代理沒用,得用這個代理配合ss

mkdir -p /etc/systemd/system/docker.service.d 

添加如下內容到/etc/systemd/system/docker.service.d/http-proxy.conf

[Service] Environment="HTTP_PROXY=http://127.0.0.1:8118" "NO_PROXY=localhost,172.16.0.0/16,127.0.0.1,10.244.0.0/16" 

添加如下內容到/etc/systemd/system/docker.service.d/https-proxy.conf

[Service] Environment="HTTPS_PROXY=https://127.0.0.1:8118" "NO_PROXY=localhost,172.16.0.0/16,127.0.0.1,10.244.0.0/16" 

查看代理內容

docker info | grep -i proxy 

添加 kubernetes 的 yum 源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

安裝

yum install -y kubelet kubeadm kubectl systemctl enable kubelet && sudo systemctl start kubelet 

至此,在所有機器上安裝所需的軟件已經結束。

但,你別高興太早,過程並不會很順利

你會遇到各種問題

下邊對已知問題總結

安裝過程中無法訪問mirrors,或者yum ,我們嘗試換源解決

替換國內yum源

#進入yum配置文件目錄 cd /etc/yum.repos.d/  #備份配置文件 mv CentOS-Base.repo CentOS-Base.repo.backup  #在CentOS中配置使用網易和阿里的開源鏡像 wget http://mirrors.163.com/.help/CentOS6-Base-163.repo wget http://mirrors.aliyun.com/repo/Centos-7.repo 清除系統yum緩存並生成新的yum緩存  yum clean all #清除Yum緩存 yum makecache #把服務器的包信息下載到本地電腦緩存起來 yum update #升級包同時也升級軟件和系統內核 

安裝epel源

[root@bogon yum.repos.d]# yum list | grep epel-release [root@bogon yum.repos.d]# yum install -y epel-release [root@bogon yum.repos.d]# ls # epel源安裝成功,比原來多了一個epel.repo和epel-testing.repo文件 Centos-7.repo CentOS-Base-163.repo epel.repo epel-testing.repo repo.bak 

使用阿里開源鏡像提供的epel源

[root@bogon yum.repos.d]# wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo # 下載阿里開源鏡像的epel源文件 [root@localhost yum.repos.d]# ls CentOS7-Base-163.repo epel-7.repo epel-testing.repo Centos-7.repo epel.repo repo_bak 

再次清除系統yum緩存,並重新生成新的yum緩存

[root@bogon yum.repos.d]# yum clean all # 清除系統所有的yum緩存 [root@bogon yum.repos.d]# yum makecache # 生成yum緩存 

到此 你開心的執行安裝命令繼續了

六 在master上配置

初始化K8S

通過kubeadm init命令來初始化,指定一下kubernetes版本,並設置一下pod-network-cidr。

kubeadm init --kubernetes-version=v1.14.3 --pod-network-cidr=10.244.0.0/16 

等待執行完成后,會看到類似如下的提示,非常友好,這行內容先記錄下,等下節點添加的時候要使用。

kubeadm join --token 2fae1b.e4306e679794caaf 172.16.93.220:6443 --discovery-token-ca-cert-hash sha256:26d12811d5a60ecd91ba6bfea03daa34460d6143ceb11777179fd02e09f0ad16 

每個人都不同,請不要復制

如果初始化失敗,可以重置下,再初始化

kubeadm reset #------注意用完這個,重裝之后,可能遇到kubectl顯示認證不過無法使用,這是多執行一次屏幕回顯的注冊adminconf指令那幾條,就ok了 

添加K8S配置 —– 裝完按照屏幕回顯操作即可,不用復制這里的,每個版本不一樣

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

安裝network addon

要docker之間能互相通信需要做些配置,這里用Flannel來實現 —–中間版本的地方換成master就是安裝最新的

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml 

安裝完成后,檢查下kube-dns是否安裝成功。kube-dns比較重要,它負責整個集群的解析,要確保它正常運行。使用kubectl get pods –all-namespaces命令查看

七 node加入集群

在另一台機器上執行

kubeadm join --token 2fae1b.e4306e679794caaf 172.16.93.220:6443 --discovery-token-ca-cert-hash sha256:26d12811d5a60ecd91ba6bfea03daa34460d6143ceb11777179fd02e09f0ad16 

順利的話可以看到類似如下的提示

Run 'kubectl get nodes' on the master to see this node join the cluster. 

在master上執行kubectl get nodes查看節點

八 配置dashboard

默認是沒web界面的,可以在master機器上安裝一個dashboard插件,實現通過web來管理

TODO…

本文參考

https://blog.csdn.net/golduty2/article/details/80700491?tdsourcetag=s_pcqq_aiomsg

https://blog.csdn.net/u012570862/article/details/80150988?tdsourcetag=s_pcqq_aiomsg

https://qizhanming.com/blog/2019/01/25/how-to-install-docker-ce-on-centos-7

https://www.jianshu.com/p/86a7f90bcbae?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM