Kubernetes搭建流程(基于Centos7)

安裝docker
  • 安裝docker環(huán)境必要的包

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
  • 加入docker repo

    sudo yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo
    
  • 安裝docker-ce (ce 版本為社區(qū)版本张足,ee版本為商業(yè)版本)

    sudo yum makecache fast
    sudo yum install docker-ce
    

    安裝過程中可能會(huì)出現(xiàn)依賴問題,缺少 container-selinux-2.9 這個(gè)安裝包寒矿,此時(shí)需要執(zhí)行以下安裝命令

    sudo yum install ftp://fr2.rpmfind.net/linux/centos/7.3.1611/extras/x86_64/Packages/container-selinux-2.9-4.el7.noarch.rpm
    

    成功后繼續(xù)執(zhí)行

    sudo yum install docker-ce
    
  • 啟動(dòng)docker服務(wù)

    sudo systemctl start docker.service
    
安裝 kubectl
  • 下載最新的kublet程序

    curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
    
  • 添加可執(zhí)行權(quán)限

    chmod +x ./kubectl
    
  • 移動(dòng)到系統(tǒng)環(huán)境中

    sudo mv ./kubectl /usr/local/bin/kubectl
    
安裝 kubelet,kubectl
  • 切換到root環(huán)境

    su root  或者  sudo -i
    
  • 安裝 kubelet 和 kubeadm

    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
    setenforce 0
    yum install -y kubelet kubeadm
    
  • 啟動(dòng)kubelet服務(wù)

    systemctl enable kubelet && systemctl start kubelet
    
初始化 mater node(該操作只需要在主節(jié)點(diǎn)上執(zhí)行)
  • 使用kubeadm初始化master

    kubeadm init
    
  • 初始化輸出示例

      [kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
      [init] Using Kubernetes version: v1.7.0
      [init] Using Authorization modes: [Node RBAC]
      [preflight] Running pre-flight checks
      [preflight] Starting the kubelet service
      [certificates] Generated CA certificate and key.
      [certificates] Generated API server certificate and key.
      [certificates] API Server serving cert is signed for DNS names [kubeadm-master kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 10.138.0.4]
      [certificates] Generated API server kubelet client certificate and key.
      [certificates] Generated service account token signing key and public key.
      [certificates] Generated front-proxy CA certificate and key.
      [certificates] Generated front-proxy client certificate and key.
      [certificates] Valid certificates and keys now exist in "/etc/kubernetes/pki"
      [kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
      [kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
      [kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/controller-manager.conf"
      [kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/scheduler.conf"
      [apiclient] Created API client, waiting for the control plane to become ready
      [apiclient] All control plane components are healthy after 16.502136 seconds
      [token] Using token: <token>
      [apiconfig] Created RBAC rules
      [addons] Applied essential addon: kube-proxy
      [addons] Applied essential addon: kube-dns
    
      Your Kubernetes master has initialized successfully!
    
      To start using your cluster, you need to run (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:
        http://kubernetes.io/docs/admin/addons/
    
      You can now join any number of machines by running the following on each node
      as root:
    
        kubeadm join --token <token> <master-ip>:<master-port>
    
  • 執(zhí)行上述輸入中的內(nèi)容(遺漏該步驟可能會(huì)導(dǎo)致 kube-dns pod 一直無法running的錯(cuò)誤)

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  • 安裝 pod network (用于pod以及docker容器之間進(jìn)行網(wǎng)絡(luò)通信)

    kubectl apply -f https://git.io/weave-kube-1.6
    

    Note:pod network 有多種蟆淀,此處我們選擇 weave拯啦,其他網(wǎng)絡(luò)可自行研究

加入子節(jié)點(diǎn)
  • 子節(jié)點(diǎn)加入到 Cluster

    kubeadm join --token <token> <master-ip>:<master-port>
    
安裝dashboard
  • 安裝命令

    kubectl create -f https://git.io/kube-dashboard
    
  • 運(yùn)行dashboard(需要在主機(jī)上查看)

    執(zhí)行 kubectl proxy
    

    瀏覽器訪問: http://localhost:8081/ui

    k8s dashboard
問題匯總
  • 執(zhí)行 kubeadm init 后一直卡在

    [apiclient] Created API client, waiting for the control plane to become ready
    

    可使用以下命令查看日志

    journalctl -xeu kubelet
    

    問題原因: gcr.io/google_containers/pause-amd64:3.0 沒有pull下來
    解決方式:docker pull gcr.io/google_containers/pause-amd64:3.0,若仍然pull不下來,可開啟外網(wǎng)代理再使用docker pull

  • kubelet: error: failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: "systemd" is different from docker cgroup driver: "cgroupfs"
    問題原因:kubelet 使用的cgroup driver和docker使用的不一致
    解決方式:修改kubelet配置文件: /etc/systemd/system/kubelet.service.d/10-kubeadm.conf熔任,將systemd修改為 cgroupfs,重啟kubelet ( systemctl restart kubelet )

  • 使用kubectl get nodes 命令報(bào)錯(cuò):The connection to the server localhost:8080 was refused - did you specify the right host or port?
    解決方式:添加 KUBECONFIG環(huán)境變量

    vim ~/.bash_profile
    末尾添加 export KUBECONFIG=/etc/kubernetes/admin.conf  
    source ~/.bash_profile
    
  • 安裝 kubelet kubeadm 報(bào)錯(cuò):https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64/repodata/repomd.xml: [Errno 14] curl#7 - "Failed to connect to 2404:6800:4008:801::200e: 網(wǎng)絡(luò)不可
    達(dá)"
    解決方式:開啟外網(wǎng)代理安裝

  • kube-dns 一直無法處于 3/3 running 狀態(tài)
    問題原因:使用 kubectl describe pod kube-dns --namespace=kube-system 查看發(fā)現(xiàn)如下log

    Readiness probe failed: Get http://10.32.0.3:8081/readiness: dial tcp 10.32.0.3:8081: getsockopt: connection refused
    

    解決方式:執(zhí)行init后的 output:

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

    重啟 docker kubelet

    systemctl restart docker.service
    systemctl restart kubelet.service
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末褒链,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子疑苔,更是在濱河造成了極大的恐慌甫匹,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惦费,死亡現(xiàn)場離奇詭異兵迅,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)薪贫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門恍箭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瞧省,你說我怎么就攤上這事扯夭。” “怎么了鞍匾?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵交洗,是天一觀的道長。 經(jīng)常有香客問我橡淑,道長构拳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任梁棠,我火速辦了婚禮置森,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘掰茶。我一直安慰自己暇藏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布濒蒋。 她就那樣靜靜地躺著盐碱,像睡著了一般把兔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瓮顽,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天县好,我揣著相機(jī)與錄音,去河邊找鬼暖混。 笑死缕贡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拣播。 我是一名探鬼主播晾咪,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼贮配!你這毒婦竟也來了谍倦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤泪勒,失蹤者是張志新(化名)和其女友劉穎昼蛀,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體圆存,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡叼旋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了沦辙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夫植。...
    茶點(diǎn)故事閱讀 40,427評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖油讯,靈堂內(nèi)的尸體忽然破棺而出偷崩,到底是詐尸還是另有隱情,我是刑警寧澤撞羽,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站衫冻,受9級特大地震影響诀紊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜隅俘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一邻奠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧为居,春花似錦碌宴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽呜象。三九已至,卻和暖如春碑隆,著一層夾襖步出監(jiān)牢的瞬間恭陡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工上煤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留休玩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓劫狠,卻偏偏與公主長得像拴疤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子独泞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容