CENTOS7 安裝kubernetes集群筆記

環境準備

  1. 確認官方推薦的centos版本和Docker版本官網鏈接
  2. 關閉防火墻
  • systemctl stop firewalld
  • systemctl disable firewalld
  1. 關閉swap
  • swapoff -a
  • vi /etc/fstab
    • 注釋掉swap相關行,如下
    • #/dev/mapper/centos-swap
  • cat /proc/swaps
    • 確認文件是空的
  1. 關閉 SELinux
  • setenforce 0
  • sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

安裝Docker

  1. 更新相關依賴
  • yum -y update && yum -y upgrade
  • yum install yum-utils device-mapper-persistent-data lvm2
  1. 添加Docker yum倉庫(選阿里)
  1. 安裝docker-ce(注意替換成官方推薦的版本)
  • yum update && yum install docker-ce-18.06.2.ce
  1. 配置docker daemon
  • mkdir /etc/docker

        cat > /etc/docker/daemon.json <<EOF
        {
          "exec-opts": ["native.cgroupdriver=systemd"],
          "log-driver": "json-file",
          "log-opts": {
            "max-size": "100m"
          },
          "storage-driver": "overlay2",
          "storage-opts": [
            "overlay2.override_kernel_check=true"
          ]
        }
        EOF  
    
    • systemctl daemon-reload
    • systemctl restart docker
    • systemctl enable docker #開機啟動

安裝kubernetes

  1. 添加kubernetes yum倉庫(阿里),官方倉庫參考

     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
    
  2. 安裝三套件

  • yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
  • systemctl enable --now kubelet
  1. 修改k8s配置

     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
     EOF
     sysctl --system
    
  2. 偷梁換柱,繞過安裝過程中從墻外google拉鏡像的問題

    • 列出依賴鏡像
      • kubeadm config images list
        • k8s.gcr.io/kube-apiserver:v1.12.2
        • k8s.gcr.io/kube-controller-manager:v1.12.2
        • k8s.gcr.io/kube-scheduler:v1.12.2
        • k8s.gcr.io/kube-proxy:v1.12.2
        • k8s.gcr.io/pause:3.1
        • k8s.gcr.io/etcd:3.2.24
        • k8s.gcr.io/coredns:1.2.2
  • 下載阿里鏡像,替換前綴
    • cat ./pull.sh

           for i in `kubeadm config images list`; do 
             imageName=${i#k8s.gcr.io/}
             docker pull registry.aliyuncs.com/google_containers/$imageName
             docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
             docker rmi registry.aliyuncs.com/google_containers/$imageName
           done;
      
    • sh pull.sh

  1. 初始化集群
  • kubeadm init --kubernetes-version=$(kubeadm version -o short) --pod-network-cidr=10.244.0.0/16 # pod-network-cidr=10.244.0.0/16 這個網段是之后安裝flannel中需要且定死的

  • 完成后輸出

        Your Kubernetes control-plane 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/
        
        Then you can join any number of worker nodes by running the following on each as root:
        
        kubeadm join 10.168.1.124:6443 --token idxunz.zj551qd8fxtnwv2g \
            --discovery-token-ca-cert-hash sha256:697ed215b32abd060d7902f2f588545c8ba0fd98478994e2814f71e31c777b9b
    
    • 這段最好保存,之后備用。

    • 如果kubeXXX命令運行錯誤,則執行第一段

        mkdir -p $HOME/.kube
        sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
        sudo chown $(id -u):$(id -g) $HOME/.kube/config
      
  1. 默認主節點不能部署,去除這一限制
    • kubectl taint nodes --all node-role.kubernetes.io/master-

安裝網絡插件flannel(這個容易上手)

  1. 具體的連接可能會變化,參考官網

加入節點

  1. 新節點執行上面的操作直到安裝完kubernets三套件。不需要執行初始化和安裝flannel
  2. 偷梁換柱(不知道為何主節點安裝flannal時可以正常拉取)
  • docker pull docker.io/mirrorgooglecontainers/pause:3.1

  • docker tag docker.io/mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1

  • docker rmi docker.io/mirrorgooglecontainers/pause:3.1

  • docker pull quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64

  • docker tag quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64

  • docker rmi quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64

  • docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.16.2

  • docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.16.2 k8s.gcr.io/kube-proxy:v1.16.2

  • docker rmi registry.aliyuncs.com/google_containers/kube-proxy:v1.16.2

  1. 把之前記錄的命令拉出來執行
  • kubeadm join 10.168.1.124:6443 --token idxunz.zj551qd8fxtnwv2g
    --discovery-token-ca-cert-hash sha256:697ed215b32abd060d7902f2f588545c8ba0fd98478994e2814f71e31c777b9b
  1. 命令丟了?token失效過期了?
  • 列出已經生成的token
    • kubeadm token list
  • 重新生成token
    • kubeadm token create --print-join-command

如何查找問題,總有一款適合你

  1. 查看節點狀態
  • kubectl get nodes
  1. 查看服務和端口
  • kubectl get services -A
  1. 查看POD
  • kubectl get pods -A
  1. 查看pod配置(初始化錯誤也可以用這個查看)
  • kubectl describe pod [PodName] --namespace=[PodNamespace]
  1. 查看日志
  • kubectl logs -f [PodName]
  1. 下載image卡住了?重啟下就好了
  • systemctl restart kubelet

安裝Dashboard

  1. 改配置
  1. 安裝

    • kubectl apply -f kubernetes-dashboard.yaml
    • kubectl replace --force -f kubernetes-dashboard.yaml#重裝
  2. 賬戶權限

    • 開賬戶
      • kubectl create serviceaccount k8sadmin -n kube-system
    • 賦權
      • kubectl create clusterrolebinding k8sadmin --clusterrole=cluster-admin --serviceaccount=kube-system:k8sadmin
    • 獲得登錄token
      • kubectl get secret -n kube-system
      • kubectl describe secret [TokenName] -n kube-system
      • 以上合并為一行命令
        • kubectl get secret -n kube-system | grep k8sadmin | cut -d " " -f1 | xargs -n 1 | xargs kubectl get secret -o 'jsonpath={.data.token}' -n kube-system | base64 --decode
  3. 打開https://ip:port, 必須加上https, 忽略安全提示

  4. 用token登錄

安裝WeaveScope

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,316評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,481評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,241評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,939評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,697評論 6 409
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,182評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,247評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,406評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,933評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,772評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,973評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,516評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,638評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,866評論 1 285
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,644評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,953評論 2 373

推薦閱讀更多精彩內容