<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] 參考鏈接:https://my.oschina.net/u/2306127/blog/3214162 ## 關閉 swap ### 暫時關閉 ``` $ swapoff -a ``` ### 永久關閉 . 注釋掉這一行 ``` sudo vim /etc/fstab # /swapfile none swap sw 0 0 ``` 重啟機器 ``` sudo reboot ``` ## docker 的配置 安裝完成之后需要進行一些配置,包括 切換docker下載源為國內鏡像站 以及 修改cgroups。 cgroups是一個進程隔離工具 docker就是用它來實現容器的隔離的。docker 默認使用的是cgroupfs,而 k8s 也用到了一個進程隔離工具systemd,如果使用兩個隔離組的話可能會引起異常,所以我們要把 docker 的也改成systemd。 編輯daemon.json: ``` sudo vim /etc/docker/daemon.json ``` ``` { "registry-mirrors": [ "阿里云加速地址" ], "exec-opts": [ "native.cgroupdriver=systemd" ] } ``` 然后:wq保存后重啟 docker: ``` sudo systemctl daemon-reload sudo systemctl restart docker ``` ## 安裝 k8s kubelet: k8s 的核心服務 kubeadm: 這個是用于快速安裝 k8s 的一個集成工具,我們在master1和worker1上的 k8s 部署都將使用它來完成。 kubectl: k8s 的命令行工具,部署完成之后后續的操作都要用它來執行 ``` #進入root權限/或者使用sudo # 使得 apt 支持 ssl 傳輸 sudo apt-get update && sudo apt-get install -y apt-transport-https # 下載 gpg 密鑰 sudo curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add - # 添加 k8s 鏡像源 sudo cat << EOF >/etc/apt/sources.list.d/kubernetes.list deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF # 更新源列表 apt-get update # 下載 kubectl,kubeadm以及 kubelet 安裝固定版本18.0/ 我試過1.18.6的鏡像下載不下來 sudo apt install kubeadm=1.18.0-00 kubectl=1.18.0-00 kubelet=1.18.0-00 ``` ## 安裝 master 節點 初始化master節點,這一章節只需要在管理節點上配置即可,大致可以分為如下幾步: * 拉去國內鏡像 * 初始化master節點 * 部署flannel網絡 * 配置kubectl工具 ### 拉取國內鏡像 獲取鏡像列表 由于官方鏡像地址被墻,所以我們需要首先獲取所需鏡像以及它們的版本。然后從國內阿里的鏡像站獲取。 ``` kubeadm config images list ``` 腳本獲取 ``` images=( kube-apiserver:v1.18.0 kube-controller-manager:v1.18.0 kube-scheduler:v1.18.0 kube-proxy:v1.18.0 pause:3.2 etcd:3.4.3-0 coredns:1.6.7 ) for imageName in ${images[@]} ; do 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 ``` >版本要對應。 ### 如果版本對不上 比如kubeadm config images list輸出的版本號為v1.18.6,則使用配置文件 導出配置文件 ``` kubeadm config print init-defaults --kubeconfig ClusterConfiguration > kubeadm.yml ``` 修改配置 ``` # 修改配置為如下內容 apiVersion: kubeadm.k8s.io/v1beta1 bootstrapTokens: - groups: - system:bootstrappers:kubeadm:default-node-token token: abcdef.0123456789abcdef ttl: 24h0m0s usages: - signing - authentication kind: InitConfiguration localAPIEndpoint: # 修改為主節點 IP advertiseAddress: 192.168.141.130 bindPort: 6443 nodeRegistration: criSocket: /var/run/dockershim.sock name: kubernetes-master taints: - effect: NoSchedule key: node-role.kubernetes.io/master --- apiServer: timeoutForControlPlane: 4m0s apiVersion: kubeadm.k8s.io/v1beta1 certificatesDir: /etc/kubernetes/pki clusterName: kubernetes controlPlaneEndpoint: "" controllerManager: {} dns: type: CoreDNS etcd: local: dataDir: /var/lib/etcd # 國內不能訪問 Google,修改為阿里云 imageRepository: registry.aliyuncs.com/google_containers kind: ClusterConfiguration # 修改版本號 kubernetesVersion: v1.18.0 networking: dnsDomain: cluster.local # 配置成 Calico 的默認網段 podSubnet: "192.168.0.0/16" serviceSubnet: 10.96.0.0/12 scheduler: {} --- # 開啟 IPVS 模式 apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration featureGates: SupportIPVSProxyMode: true mode: ipvs ``` 查看和拉取鏡像 ``` # 查看所需鏡像列表 kubeadm config images list --config kubeadm.yml # 拉取鏡像 kubeadm config images pull --config kubeadm.yml ``` 這樣鏡像就拉取下來了 ### 初始化 master 節點 如果使用了上面的配置,則使用--config參數 --config=kubeadm.yml ``` sudo kubeadm init --config=kubeadm.yml ``` ` ` 初始化節點的另一個方法:使用kubeadm的init命令就可以輕松的完成初始化,不過需要攜帶幾個參數,如下。先不要直接復制執行,將賦值給--apiserver-advertise-address參數的 ip 地址修改為自己的master主機地址,然后再執行。 ``` sudo kubeadm init \ --apiserver-advertise-address=192.168.84.75 \ --pod-network-cidr=10.244.0.0/16 \ --image-repository=registry.aliyuncs.com/google_containers --image-repository=googlecontainersmirror ``` 參數含義: --apiserver-advertise-address: k8s 中的主要服務apiserver的部署地址,填自己的管理節點 ip --image-repository: 拉取的 docker 鏡像源,因為初始化的時候kubeadm會去拉 k8s 的很多組件來進行部署,所以需要指定國內鏡像源,下不然會拉取不到鏡像。 --pod-network-cidr: 這個是 k8s 采用的節點網絡,因為我們將要使用flannel作為 k8s 的網絡,所以這里填10.244.0.0/16就好 --kubernetes-version: 這個是用來指定你要部署的 k8s 版本的,一般不用填,不過如果初始化過程中出現了因為版本不對導致的安裝錯誤的話,可以用這個參數手動指定。 --ignore-preflight-errors: 忽略初始化時遇到的錯誤,比如說我想忽略 cpu 數量不夠 2 核引起的錯誤,就可以用--ignore-preflight-errors=CpuNum。錯誤名稱在初始化錯誤時會給出來。 當你看到如下字樣是,就說明初始化成功了,請把最后那行以kubeadm join開頭的命令復制下來,之后安裝工作節點時要用到的,如果你不慎遺失了該命令,可以在master節點上使用**kubeadm token create --print-join-command命令來重新生成一條**。 ``` Your Kubernetes master 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/ You can now join any number of machines by running the following on each node as root: kubeadm join 192.168.84.75:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:623718f891678481bc0379984756b7d37468343eb9c243cdf51e90209a749a17 ``` 如果在初始化過程中出現了任何Error導致初始化終止了,使用kubeadm reset重置之后再重新進行初始化。 最后兩行需要保存下來,`kubeadm join ...`是worker節點加入所需要執行的命令. ### 配置kubectl工具 接下來配置環境, 讓當前用戶可以執行kubectl命令: ``` mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/kubelet.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 執行完成后并不會刷新出什么信息,可以通過下面兩條命令測試 kubectl是否可用: ``` # 查看已加入的節點 sudo kubectl get nodes # 查看集群狀態 sudo kubectl get cs ``` 測試一下: 此處的`NotReady`是因為網絡還沒配置. ``` $ sudo kubectl get node NAME STATUS ROLES AGE VERSION k8s-master NotReady master 3m25s v1.15.3 ``` ### 部署calico網絡 下載描述文件 ``` $ sudo wget https://docs.projectcalico.org/v3.8/manifests/calico.yaml $ cat kubeadm.yml | grep serviceSubnet: serviceSubnet: 10.96.0.0/12 ``` 打開`calico.yaml`, 將`192.168.0.0/16`修改為`10.96.0.0/12` > 需要注意的是, calico.yaml中的IP和kubeadm.yml需要保持一致, 要么初始化前修改kubeadm.yml, 要么初始化后修改calico.yaml. 執行`kubectl apply -f calico.yaml`初始化網絡. 此時查看node信息, master的狀態已經是`Ready`了. ``` $ sudo kubectl get node NAME STATUS ROLES AGE VERSION k8s-master Ready master 15m v1.15.3 ``` ## 子節點加入 在master節點上使用**sudo kubeadm token create --print-join-command**命令來重新生成一條 ``` Your Kubernetes master 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/ You can now join any number of machines by running the following on each node as root: kubeadm join 192.168.84.75:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:623718f891678481bc0379984756b7d37468343eb9c243cdf51e90209a749a17 ``` 如果要重新添加一個曾經添加過的節點,先執行: ``` kubeadm?reset ``` 再進行添加 刪除節點: (1)卸載節點(drain 翻譯排出,此時卸載節點,但是沒有刪除) ``` kubectl drain <node_name> --delete-local-data --force --ignore-daemonsets //可通過 sudo kubectl get node 獲取 ``` (2)刪除節點 ``` kubectl delete node <node_name> ``` (3)清空init配置,需要刪除的節點上執行 ``` kubeadm reset ``` ## 搭建完集群后出現問題 error: no configuration has been provided, try setting KUBERNETES\_MASTER environment variable ``` kubectl get namespaces kubectl get nodes ``` error: no configuration has been provided, try setting KUBERNETES\_MASTER environment variable 在/etc/profile末尾增加 ``` $ vim /etc/profile export KUBECONFIG=/etc/kubernetes/admin.conf $ source /etc/profile ``` ## 查看kubectl狀態 輸入systemctl status kubelet命令查看kubelet的情況 ``` sudo systemctl status kubelet sudo systemctl start kubelet sudo systemctl stop kubelet sudo systemctl restart kubelet ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看