[轉] CentOS7 用 kubeadm 快速安裝 Kubernetes v1.13.4 最新教程

【轉 + 編輯】【From】 https://www.jianshu.com/p/4d61f18bc62d  , https://www.jianshu.com/p/5ff6e26d1912node

 

時間是2019年3月18日。測試安裝的Centos版本是 7.4.1708 ,k8s 以及 kubeadm 版本爲 1.13.4 ,docker 版本爲 18.06 ,Flannel 版本爲 0.11.0。linux

過程主要參考以上文章,但結合實測狀況,作了一些修改或者編輯。如下第一步的安裝腳本能夠直接用 root 整個執行,無需FQ,但依賴第三方倉庫。git

 

第一步: 安裝 K8S 和 kubeadm (全部節點)github

### 關閉 selinux
setenforce 0 #實時動態關閉 selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config #禁止重啓後自動開啓

### 關閉交換分區 swapoff
-a #實時動態關閉交換分區 sed -i '/ swap / s/^/#/' /etc/fstab #禁止重啓後自動開啓
### 網絡配置文件
cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 vm.swappiness=0 EOF modprobe br_netfilter #執行該命令 若是不執行就會在應用k8s.conf時出現加載錯誤 sysctl -p /etc/sysctl.d/k8s.conf #應用配置文件
### 配置資源地址
yum install -y wget #安裝wget命令行 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #配置yum源 yum makecache #更新緩存 yum install -y yum-utils device-mapper-persistent-data lvm2 #安裝yum擴展工具 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #配置docker下載的地址
### 安裝Docker yum list docker-ce --showduplicates|sort -r #展現版本列表 #yum install –y docker-ce #默認安裝最新版,也能夠指定版本下載
yum install -y docker-ce-18.06.3.ce-3.el7 systemctl start docker #啓動docker systemctl enable docker #將docker加入到開機啓動 docker version #查看docker啓動狀況 和版本信息

### 配置docker國內鏡像

mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOFdocker

service docker restart

### 配置k8s資源的下載地址
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] 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 EOF ### 安裝 kubelet kubeadm kubectl yum install -y kubelet kubeadm kubectl systemctl enable kubelet.service #開機啓動
### 修改10
-kubeadm.conf 文件 docker info | grep -i cgroup #查看 Cgroup Driver: cgroupfs 有可能你的與這個不同是System 這個地方決定 下面的cgroup-driver 值 必定要保證這兩個地方相同 # vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf #編輯文件 # Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=cgroupfs" # Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true --fail-swap-on=false" # 在編輯文件中添加上面內容 注意必定要保證-cgroup-driver=cgroupfs的值與docker哪裏查詢出來的同樣 ### 查看須要安裝的k8s必須鏡像與 安裝鏡像 kubeadm config images list #能夠查看所需安裝的鏡像文件 kubeadm config images list |sed -e 's/^/docker pull /g' -e 's#k8s.gcr.io#docker.io/mirrorgooglecontainers#g' |sh -x docker images |grep mirrorgooglecontainers |awk '{print "docker tag ",$1":"$2,$1":"$2}' |sed -e 's#mirrorgooglecontainers#k8s.gcr.io#2' |sh -x docker images |grep mirrorgooglecontainers |awk '{print "docker rmi ", $1":"$2}' |sh -x COREDNS_VER=`docker images | grep coredns | awk '{print $2}'` docker pull coredns/coredns:${COREDNS_VER} docker tag coredns/coredns:${COREDNS_VER} k8s.gcr.io/coredns:${COREDNS_VER} docker rmi coredns/coredns:${COREDNS_VER} #coredns 的版本號要與你查詢所需安裝鏡像的版本號相同,我這裏須要的是1.2.6 docker images | grep k8s.gcr.io #查看全部鏡像是否都已經pull下來了

#k8s.gcr.io/kube-proxy v1.13.4 fadcc5d2b066 2 weeks ago 80.3MB
#k8s.gcr.io/kube-apiserver v1.13.4 fc3801f0fc54 2 weeks ago 181MB
#k8s.gcr.io/kube-controller-manager v1.13.4 40a817357014 2 weeks ago 146MB
#k8s.gcr.io/kube-scheduler v1.13.4 dd862b749309 2 weeks ago 79.6MB
#k8s.gcr.io/coredns 1.2.6 f59dcacceff4 4 months ago 40MB
#k8s.gcr.io/etcd 3.2.24 3cab8e1b9802 5 months ago 220MB
#k8s.gcr.io/pause 3.1 da86e6ba6ca1 15 months ago 742kBjson

 

 

第二步: 初始化 (只在主節點Master上面操做)centos

### 先配置好如下信息
K8S_VER=v1.13.4
MASTER_IP=192.168.2.108

#只在Master的主機上面執行 版本信息與你要安裝的相同
kubeadm init --kubernetes-version=${K8S_VER} --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=${MASTER_IP}

# 當出現 相似 以下說明 master 安裝成功
# kubeadm join --token 19f284.da47998c9abb01d3 192.168.1.111:6443 --discovery-token-ca-cert-hash sha256:0fd95a9bc67a7bf0ef42da968a0d55d92e52898ec37c971bd77ee501d845b538

#而後執行 安裝成功提示的 命令行  這部分執行你安裝成功後的部分 可能每一個人的有所不一樣
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config


#若是是國內 經過執行yml沒法直接下載的話執行下面命令
docker pull registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64
docker tag registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64 quay.io/coreos/flannel:v0.10.0-amd64
docker rmi registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64api

 
 

#安裝Flannel緩存

 
 

mkdir -p ~/k8s/
cd k8s/
llruby

 
 

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

 
 

kubectl apply -f kube-flannel.yml

 
 

#安裝成功後查看pod
kubectl get pod -n kube-system


NAME READY STATUS RESTARTS AGE
coredns-86c58d9df4-j9g8d 1/1 Running 0 128m
coredns-86c58d9df4-pg45w 1/1 Running 0 128m
etcd-k8s1 1/1 Running 0 127m
kube-apiserver-k8s1 1/1 Running 0 127m
kube-controller-manager-k8s1 1/1 Running 0 127m
kube-flannel-ds-amd64-7btlw 1/1 Running 0 91m
kube-flannel-ds-amd64-9vq42 1/1 Running 0 106m
kube-flannel-ds-amd64-kdf42 1/1 Running 0 90m
kube-proxy-dtmfs 1/1 Running 0 128m
kube-proxy-p76tc 1/1 Running 0 90m
kube-proxy-xgw28 1/1 Running 0 91m
kube-scheduler-k8s1 1/1 Running 0 128m

 
 

#所有Running則表示 成功了

 
 

#若是發現哪一項的STATUS的狀態不是Running,執行以下命令
kubectl describe pod [這裏是複製上面的Name列] -n kube-system

 
 

#這裏會看到具體的錯誤內容,而後根據提示進行解決。

 

第三步: 加入node節點,檢查 

 
 

### 執行master 安裝成功後的 kubeadm join命令 注意是你本身的,下面是舉例
kubeadm join --token 19f284.da47998c9abb01d3 192.168.1.111:6443 --discovery-token-ca-cert-hash sha256:0fd95a9bc67a7bf0ef42da968a0d55d92e52898ec37c971bd77ee501d845b538

 

### 在node節點上加入flannel的鏡像,因爲正常拉不到,也要繞路
docker pull registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64
docker tag registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64 quay.io/coreos/flannel:v0.10.0-amd64
docker rmi registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64

 
 

### 主節點查看命令

 

#命令一 

kubectl get cs #顯示內容以下說明Master安裝沒問題


NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health": "true"}

 

#命令二

kubectl get pod -n kube-system #查看pod狀態 下面只是部分pod內容


NAME READY STATUS RESTARTS AGE
coredns-86c58d9df4-j9g8d 1/1 Running 0 128m
coredns-86c58d9df4-pg45w 1/1 Running 0 128m
etcd-k8s1 1/1 Running 0 127m
kube-apiserver-k8s1 1/1 Running 0 127m
kube-controller-manager-k8s1 1/1 Running 0 127m

 

#命令三

kubectl get node #查看節點狀態


NAME STATUS ROLES AGE VERSION
k8s1 Ready master 131m v1.13.1
k8s2 Ready <none> 93m v1.13.1
k8s3 Ready <none> 93m v1.13.1

 
 

#若是你添加了節點裏面看的話 可能還未初始化,顯示的是NoReady多等會兒。

 

 

卸載:

kubectl delete node --all
kubeadm reset -f
modprobe -r ipip
lsmod

yum remove -y kubelet kubeadm kubectl docker-ce docker-ce-cli
rm -rf ~/.kube/
rm -rf /etc/kubernetes/
rm -rf /etc/systemd/system/kubelet.service.d
rm -rf /etc/systemd/system/kubelet.service
rm -rf /usr/bin/kube*
rm -rf /etc/cni
rm -rf /opt/cni
rm -rf /var/lib/etcd
rm -rf /var/etcd
相關文章
相關標籤/搜索