部署環境:
1:系統配置(ALL HOST)
1.1:SELINUX配置node
首先獲取selinux的狀態linux
[root@localhost ~]# sestatus
能夠看到當前的狀態是啓用的,此狀態更改有兩種方式:docker
1:臨時關閉json
[root@localhost ~]# setenforce 0 #臨時關閉
2:永久關閉(修改配置文件)centos
selinux配置文件涉及到兩個,以下api
/etc/selinux/config /etc/sysconfig/selinux
用vi命令分別修改這兩個配置文件的SELINUX參數爲disabled緩存
SELINUX=disabled
也可使用sed命令替換服務器
sudo sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config sudo sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux
修改完成以下網絡
[root@localhost ~]# vi /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX=disabled # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of three values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
配置文件修改以後須要重啓系統才能生效,可是能夠先使用相關指令臨時關閉,無需浪費時間,至此,SELINUX配置完成app
1.2:防火牆配置
[root@localhost ~]# systemctl disable firewalld #禁止防火牆開機自啓
[root@localhost ~]# systemctl stop firewalld #關閉防火牆
關閉以後,查看服務狀態
[root@localhost ~]# systemctl status firewalld #查看防火牆當前運行狀態
能夠看到當前狀態爲dead #不活躍的,因此防火牆配置完成
1.3:關閉swap
sudo swapoff -a
能夠看到,當前的分區掛載是存在有swap的,關閉的方法很簡單,在swap這一行前面加入一個 {#} 便可,或者執行下面的指令
sudo sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab #永久
至此,swap配置完成
1.4:配置K8S虛擬網絡路由轉發
sudo echo -e "net.bridge-nf-call-ip6tables = 1\nnet.bridge-nf-call-iptables = 1\nnet.ipv4.ip_forward = 1" > /etc/sysctl.conf
上面的命令就是將下面三個參數寫入sysctl.conf配置文件,修改以後執行生效指令
sysctl -p
結果以下,其中的報錯信息暫時無論,至此,轉發配置完成
2:配置阿里源,docker源,kubelet源(ALL HOST)
(衆所周知,國內使用一些國外系統的時候總會遇到一些網絡問題,故此咱們在安裝任何服務前先配置一下軟件倉庫服務器)
1:備份源
rm -rf /yum_bak&&mkdir -p /yum_bak mv /etc/yum.repos.d/* /yum_bak/&&ls
2:添加阿里源,docker源,kubelet源
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #添加阿里源
sudo curl -o /etc/yum.repos.d/Docker-ce.repo #添加docker-ce源https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
#臨時關閉selinux##源配置完成
setenforce 0
sudo yum clean all #清除緩存
sudo yum makecache -y #建立索引
sudo yum repolist #包統計
結果以下:
能夠看到,源配置已經成功
3:服務安裝(all host)
3.1:安裝docker
首先查看當前倉庫已啓用的docker-ce倉庫有哪些
yum repolist all | grep docker
能夠看到,當前啓用的倉庫爲穩定版,其餘類型均爲禁用狀態,下一步查看當前可安裝的docker版本
yum list docker-ce --showduplicates|sort -r
當前源可獲取的最新版本爲第一個,也就是
因此,如今若是執行服務安裝命令,則會安裝此版本,如今咱們先安裝指定版本(低版本)
sudo yum install -y docker-ce-18.06.3.ce-3.el7
而後啓動看看
sudo systemctl start docker
查看docke信息
docker info
如今我又想安裝最新版了,那麼也簡單,執行安裝/更新指令便可
sudo yum update -y docker-ce
而後再次查看docker信息
sudo systemctl restart docker sudo docker info
docker安裝到此結束
3.2:安裝kubelet(k8s)
首先查看可安裝版本
yum list kubelet --showduplicates|sort -r
此次就直接安裝最新版吧
sudo yum install -y kubelet
而後繼續按照其餘組件(可一塊兒安裝)
sudo yum install -y kubeadm kubectl
至此,服務安裝部分結束
4:服務配置
4.1:docker 配置(all host)
docker通常狀況下只須要配置一點便可(鏡像地址),命令以下:
sudo mkdir -p /etc/docker
echo -e "{\n \"registry-mirrors\": [\"https://r61ch9pn.mirror.aliyuncs.com\"]\n}" > /etc/docker/daemon.json
cat /etc/docker/daemon.json
配置以後重啓docker服務,查看docker信息,查看鏡像地址是否成功改變
sudo systemctl daemon-reload sudo systemctl restart docker sudo docker info
查看鏡像地址(docker info反饋的下面)
至此,docker配置完成
4.2:K8S配置(ALL Host)
全部節點部分:
首先爲了區分開來,先對主機進行命名及主機解析
4.2.1:主機名配置:
hostnamectl set-hostname master #其餘主機分別把master換成本身的主機名便可
su
hostname
4.2.2:主機解析(全部節點一致)
先查看當前配置
cat /etc/hosts
當前配置則是默認設置,因此如今須要追加主機映射配置
vi /etc/hosts
追加如下參數
10.5.1.10 master 10.5.1.11 node1 10.5.1.12 node2 etcd
效果以下:
而後將此文件分派給其餘節點:
scp /etc/hosts node1:/etc/
scp /etc/hosts node2:/etc/
至此,主機解析配置完成!
4.3:初始化k8s(Master)
獲取k8s版本
ver=`kubeadm version|awk '{print $5}'|sed "s/[^0-9|\.]//g"|awk 'NR==1{print}'`
獲取MASTER主機IP
ip=`cat /etc/hosts|grep master|awk '{print $1}'|awk 'NR==1{print}'`
驗證信息
echo -e "k8s version is v${ver}\nmaster ip is ${ip}"
出現以上信息以後就能夠執行初始化操做了:初始化master節點
kubeadm init --apiserver-advertise-address=${ip} \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v${ver} \ --service-cidr=10.1.0.0/16 \ --pod-network-cidr=10.244.0.0/16
而後遇到問題
首先解決第一個:防火牆配置
sudo systemctl stop firewalld&&sudo systemctl disable firewalld
而後到第二個:設置docker服務開機自啓
sudo systemctl enable docker
第三個暫不解決,這個問題不影響主要功能
第四個:設置k8s開機自啓
sudo systemctl enable docker kubelet
第五個:關閉swap
sudo swapoff -a #臨時關閉
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab #永久
如今繼續初始化:
此時能夠看到顯示鏡像正在拉取中........
而後初始化成功,提示有三個關鍵信息,前面兩個直接在master執行
按照提示執行相關指令:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
而後執行下一個指令
kubectl apply -f https://xypj-1252147235.cos.ap-guangzhou.myqcloud.com/kube-flannel.yaml
第三條執行分別在node節點執行,此指令涉及的uid屬於隨機性,如過時請在master節點執行下面的命令從新生成
kubeadm token create --print-join-command
至此,master節點初始化完成!
5:Node節點加入並驗證
首先,在master節點執行註冊命令建立,而後複製到node節點進行註冊
而後把這段複製下來(隨機的,不要複製個人)
kubeadm join 10.1.1.2:6443 --token 32sevm.0l5rmz0q8v8kgfzv --discovery-token-ca-cert-hash sha256:25cd4612de2097d41e0bf49bd8f97ba45971d61b50fb4a768f28d49741d52e5b
而後到node節點執行
能夠看到此時有一個錯誤,一個意外,可是不要慌,穩住!首先解決第一個意外
能夠看到,此時的驅動程序是cgroup,並非system,那麼就改一下!
echo -e "{\n\t\"exec-opts\": [\"native.cgroupdriver=systemd\"],\n\t\"registry-mirrors\": [\"http://hub-mirror.c.163.com\"]\n}" > /etc/docker/daemon.json
而後驗證一下
此時,文件已經修改完成,而後繼續解決下一個錯誤
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
所有解決完成以後,只須要從新啓動docker便可
已經解決兩個問題了,而後從新註冊試試
此時顯示已經加入成功,而後去master節點查看
能夠看到,node節點已經加入了,可是狀態屬於未準備,而且rule(角色)爲空!不要慌,穩住,下面先解決最簡單的角色
kubectl label nodes node node-role.kubernetes.io/node=
//nodes接着的「node」屬於節點主機名;
//最後一個node屬於角色屬性(另外還能夠設置的角色爲master)
驗證一下!
此時,角色已經改好了,如今看一下node節點到底咋了。
在node節點查看容器運行狀況
能夠看到,有一個容器是退出狀態的,這時候能夠判斷很大程度上是這個容器致使的,那就看看這個容器到底咋了
emmmm,竟然看不到日誌,而後我發現已經能夠了
莫名其妙,可是能夠看的出的是,以前是使用tag進行運行容器的,如今是用鏡像ID,既然能夠了那就先無論了