精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【大神課堂】輕松加愉快的 Kubernetes 安裝教程

馬哥Linux運維 ? 來源:未知 ? 作者:steve ? 2018-06-02 10:39 ? 次閱讀

在國內安裝 K8S,一直是大家很頭痛的問題,各種麻煩,關鍵是還不知道需要下載什么工具。蛋疼。而且大部分國內教程要么太老,要么太挫。今天就來告訴大家如何在國內愉快的安裝K8S。

安裝環境

使用的是 kubeadm 進行安裝,過程基本安裝官方教程來的。

輕松加愉快的 Kubernetes 安裝教程

雖然寫的是阿里云 VPC,但是虛擬機也支持。影響不大。

輕松加愉快的 Kubernetes 安裝教程

如果僅僅是本地安裝玩一玩,都可以配置成1核1G。

接下來的過程,如果有翻墻主機的情況,按照流程走就可以,沒有的話直接看下載好的結果就可以了。

安裝過程

安裝過程基本包括下載軟件,下載鏡像,主機配置,啟動 Master 節點,配置網絡,啟動 Node 節點。

下載軟件

這個步驟有能力的人可以直接按照步驟來,沒有的話可以使用我打包好的1.6.2軟件包。

首先在自己的主機配置K8S源。

cat < /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpgEOF

配置好后,下載軟件包

yum install -y -downloadonly kubelet kubeadm kubectl kubernetes-cni

將下載好的所有 RPM 打包,發回到本地。這樣就完成了K8S軟件包的下載了。

下載好的 RPM:

https://pan.baidu.com/s/1clIpjCcp6h

下載鏡像

下載鏡像可以直接使用我提供的腳本,前提是要能連外網。我自己也已經下載過一份了。提供給大家使用。

#!/usr/bin/env bashimages=( kube-proxy-amd64:v1.6.2 kube-controller-manager-amd64:v1.6.2 kube-apiserver-amd64:v1.6.2 kube-scheduler-amd64:v1.6.2 kubernetes-dashboard-amd64:v1.6.0 k8s-dns-sidecar-amd64:1.14.1 k8s-dns-kube-dns-amd64:1.14.1 k8s-dns-dnsmasq-nanny-amd64:1.14.1 etcd-amd64:3.0.17 pause-amd64:3.0)for imageName in ${images[@]} ; do docker pull gcr.io/google_containers/$imageName docker tag gcr.io/google_containers/$imageName registry.cn-beijing.aliyuncs.com/bbt_k8s/$imageName docker push registry.cn-beijing.aliyuncs.com/bbt_k8s/$imageNamedonequay.io/coreos/flannel:v0.7.0-amd64docker tag quay.io/coreos/flannel:v0.7.0-amd64 registry.cn-beijing.aliyuncs.com/bbt_k8s/flannel:v0.7.0-amd64docker push registry.cn-beijing.aliyuncs.com/bbt_k8s/flannel:v0.7.0-amd64

關于這個腳本我解釋一下。這個腳本是下載常用的鏡像,然后回傳到國內的源上,可以將registry.cn-beijing.aliyuncs.com/bbt_k8s改成你自己的地址,必須先用docker login 進行登錄,否則可能會出現權限認證錯誤。推薦使用阿里云,網易的服務。如果使用自己的地址,請注意下面的配置,根據自己的情況進行修改,不在累贅了。

鏡像版本號說明:

輕松加愉快的 Kubernetes 安裝教程

OK,這些鏡像下載完成就 OK 了,不會連外網的,就直接跳過吧。

主機配置

上面的內容下載好后,我們就可以安裝了。

更新系統

沒什么可以介紹的。

yum update -y

安裝 Docker

K8S 的1.6.x 版本僅僅在 Docker 1.12上測試過,雖然最新版本 Docker 也可以運行,但是不推薦安裝最新版本,免得遇到什么問題。

curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh /dev/stdin 1.12.6

安裝完成后,禁用 Docker 的更新,禁用方式為,在/etc/yum.conf添加

exclude=docker-engine*

配置 Docker

主要是配置一些加速器,避免自己下載鏡像速度太慢。

修改/etc/docker/daemon.json 添加如下內容:

{ "registry-mirrors": ["https://自己的加速地址"]}

之后就是啟動Docker 的服務,

systemctl daemon-reloadsystemctl enable dockersystemctl start docker

修改網絡

主要是開啟橋接相關支持,這個是 flannel 需要的配置,具體是否需要,看自己的網絡組件選擇的是什么。

修改/usr/lib/sysctl.d/00-system.conf,將net.bridge.bridge-nf-call-iptables改成1.之后修改當前內核狀態

echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

安裝K8S包

上傳RPM 包,到自己的服務器上,然后執行

yum install -y *.rpm

之后開啟kubelet的開機啟動

systemctl enable kubelet

然后配置 kubelet,修改/etc/systemd/system/kubelet.service.d/10-kubeadm.conf成如下文件

[Service]Environment="KUBELET_KUBECONFIG_ARGS=--kubeconfig=/etc/kubernetes/kubelet.conf --require-kubeconfig=true"Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true"Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin"Environment="KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10 --cluster-domain=cluster.local"Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt"Environment="KUBELET_ALIYUN_ARGS=--pod-infra-container-image=registry-vpc.cn-beijing.aliyuncs.com/bbt_k8s/pause-amd64:3.0"ExecStart=ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_EXTRA_ARGS $KUBELET_ALIYUN_ARGS

在這里主要修正2個問題,一個是將 POD 的基礎容器修改為我們自己源里面的,另外一個是最新版本的 K8S 的資源管理和 Docker 默認的資源管理方式有沖突,這里把這塊給刪除了。具體可以參考https://github.com/kubernetes/release/issues/306

然后重新 reload 服務。

systemctl daemon-reload

這樣就完成了主機環境的初始化,如果是使用虛擬機,拷貝3份就可以了。如果是實體機,3臺都按照這個步驟來一遍就好了。然后為每一臺主機根據類型設置好 HostName,K8S會把 HostName 當做主機標識。

啟動 Master

配置完主機后,我們就可以啟動我們的 Master 節點了,通常 Master 節點推薦2-3個,本地測試我們就簡單一些,一個節點就可以了。

export KUBE_REPO_PREFIX="registry-vpc.cn-beijing.aliyuncs.com/bbt_k8s"export KUBE_ETCD_IMAGE="registry-vpc.cn-beijing.aliyuncs.com/bbt_k8s/etcd-amd64:3.0.17"kubeadm init --kubernetes-version=v1.6.2 --pod-network-cidr=10.96.0.0/12

前面2個環境變量配置,是讓kubeadm 初始化的時候,使用我們的鏡像源下載鏡像。

最后 kubeadm init 是初始化 Master 節點。其中需要配置的參數我說明一下。

輕松加愉快的 Kubernetes 安裝教程

執行完畢后,稍等一陣,就完成了。

kubeadm init --kubernetes-version=v1.6.2 --pod-network-cidr=10.96.0.0/12[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.[init] Using Kubernetes version: v1.6.2[init] Using Authorization mode: 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 [node0 kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 192.168.61.41][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 14.583864 seconds[apiclient] Waiting for at least one node to register[apiclient] First node has registered after 6.008990 seconds[token] Using token: e7986d.e440de5882342711[apiconfig] Created RBAC rules[addons] Created essential addon: kube-proxy[addons] Created essential addon: kube-dnsYour Kubernetes master has initialized successfully!To start using your cluster, you need to run (as a regular user): sudo cp /etc/kubernetes/admin.conf $HOME/ sudo chown $(id -u):$(id -g) $HOME/admin.conf export KUBECONFIG=$HOME/admin.confYou 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 nodeas root: kubeadm join --token 1111.1111111111111 *.*.*.*:6443

安裝完成后,有一個內容非常重要,查看安裝日志,拷貝類似于下面的語句,這條語句用來初始化之后的節點。

kubeadm join --token 11111.11111111111111 *.*.*.*:6443

接下來我們就可以去看看我們 K8S 的狀態。我這使用的是 Mac。 Linux 和 Windows 的同學自行處理。

安裝 kubectl

brew install kubectl

然后拷貝 Master 節點上的/etc/kubernetes/admin.conf文件到本機的~/.kube/config

之后執行kebectl get node。我這里已經安裝完畢了,所以有全部信息,只要能看到節點,就算是成功了。

輕松加愉快的 Kubernetes 安裝教程

安裝網絡組件

接下來我們安裝網絡組件,我這里使用的是flannel。創建2個文件

kube-flannel-rbac.yml

# Create the clusterrole and clusterrolebinding:# $ kubectl create -f kube-flannel-rbac.yml# Create the pod using the same namespace used by the flannel serviceaccount:# $ kubectl create --namespace kube-system -f kube-flannel.yml---kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1beta1metadata: name: flannelrules: - apiGroups: - "" resources: - pods verbs: - get - apiGroups: - "" resources: - nodes verbs: - list - watch - apiGroups: - "" resources: - nodes/status verbs: - patch---kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1beta1metadata: name: flannelroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: flannelsubjects:- kind: ServiceAccount name: flannel namespace: kube-system

kube-flannel-ds.yaml

---apiVersion: v1kind: ServiceAccountmetadata: name: flannel namespace: kube-system---kind: ConfigMapapiVersion: v1metadata: name: kube-flannel-cfg namespace: kube-system labels: tier: node app: flanneldata: cni-conf.json: | { "name": "cbr0", "type": "flannel", "delegate": { "isDefaultGateway": true } } net-conf.json: | { "Network": "10.96.0.0/12", "Backend": { "Type": "vxlan" } }---apiVersion: extensions/v1beta1kind: DaemonSetmetadata: name: kube-flannel-ds namespace: kube-system labels: tier: node app: flannelspec: template: metadata: labels: tier: node app: flannel spec: hostNetwork: true nodeSelector: beta.kubernetes.io/arch: amd64 tolerations: - key: node-role.kubernetes.io/master operator: Exists effect: NoSchedule serviceAccountName: flannel containers: - name: kube-flannel image: registry.cn-beijing.aliyuncs.com/bbt_k8s/flannel:v0.7.0-amd64 command: [ "/opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr" ] securityContext: privileged: true env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace volumeMounts: - name: run mountPath: /run - name: flannel-cfg mountPath: /etc/kube-flannel/ - name: install-cni image: registry.cn-beijing.aliyuncs.com/bbt_k8s/flannel:v0.7.0-amd64 command: [ "/bin/sh", "-c", "set -e -x; cp -f /etc/kube-flannel/cni-conf.json /etc/cni/net.d/10-flannel.conf; while true; do sleep 3600; done" ] volumeMounts: - name: cni mountPath: /etc/cni/net.d - name: flannel-cfg mountPath: /etc/kube-flannel/ volumes: - name: run hostPath: path: /run - name: cni hostPath: path: /etc/cni/net.d - name: flannel-cfg configMap: name: kube-flannel-cfg

然后使用使用命令進行配置。

kubectl create -f kube-flannel-rbac.ymlkubectl create -f kube-flannel-ds.yaml

啟動 Node

分別在2個Node節點,執行下面的命令。

export KUBE_REPO_PREFIX="registry-vpc.cn-beijing.aliyuncs.com/bbt_k8s"export KUBE_ETCD_IMAGE="registry-vpc.cn-beijing.aliyuncs.com/bbt_k8s/etcd-amd64:3.0.17"kubeadm join --token 1111.111111111111 *.*.*.*:6443

其中 kubeadm join 請參考啟動 Master 節點中的內容。

其它

理論上我們安裝到這里,K8S 就已經可以使用了。接下來主要是K8S的 Dashboard 的安裝,僅供參考,不一定要安裝。

安裝 DashBoard 工具

創建文件kubernetes-dashboard.yaml

# Copyright 2015 Google Inc. All Rights Reserved.## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# You may obtain a copy of the License at## http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.# See the License for the specific language governing permissions and# limitations under the License.# Configuration to deploy release version of the Dashboard UI compatible with# Kubernetes 1.6 (RBAC enabled).## Example usage: kubectl create -f apiVersion: v1kind: ServiceAccountmetadata: labels: app: kubernetes-dashboard name: kubernetes-dashboard namespace: kube-system---apiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRoleBindingmetadata: name: kubernetes-dashboard labels: app: kubernetes-dashboardroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-adminsubjects:- kind: ServiceAccount name: kubernetes-dashboard namespace: kube-system---kind: DeploymentapiVersion: extensions/v1beta1metadata: labels: app: kubernetes-dashboard name: kubernetes-dashboard namespace: kube-systemspec: replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: kubernetes-dashboard template: metadata: labels: app: kubernetes-dashboard spec: containers: - name: kubernetes-dashboard image: registry.cn-beijing.aliyuncs.com/bbt_k8s/kubernetes-dashboard-amd64:v1.6.0 imagePullPolicy: Always ports: - containerPort: 9090 protocol: TCP args: # Uncomment the following line to manually specify Kubernetes API server Host # If not specified, Dashboard will attempt to auto discover the API server and connect # to it. Uncomment only if the default does not work. # - --apiserver-host=http://my-address:port livenessProbe: httpGet: path: / port: 9090 initialDelaySeconds: 30 timeoutSeconds: 30 serviceAccountName: kubernetes-dashboard # Comment the following tolerations if Dashboard must not be deployed on master tolerations: - key: node-role.kubernetes.io/master effect: NoSchedule---kind: ServiceapiVersion: v1metadata: labels: app: kubernetes-dashboard name: kubernetes-dashboard namespace: kube-systemspec: type: NodePort ports: - port: 80 targetPort: 9090 selector: app: kubernetes-dashboard

創建文件dashboard-rbac.yaml

kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1beta1metadata: name: dashboard-adminroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects:- kind: ServiceAccount name: default namespace: kube-system

之后執行

kubectl create -f dashboard-rbac.ymlkubectl create -f kubernetes-dashboard.yaml

之后用下面的命令,獲取到對應端口號。主要是看NodePort: 31867/TCP這樣的內容。然后使用http://NodeIp:NodePort訪問就可以了,其中 NodeIp 為 Master 或者 Node 的 IP,NodePort為NodePort的端口

kubectl describe --namespace kube-system service kubernetes-dashboard

到此,這份安裝教程就到這里結束了。最后奉上一份安裝后的截圖。

輕松加愉快的 Kubernetes 安裝教程

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • kubernetes
    +關注

    關注

    0

    文章

    223

    瀏覽量

    8698

原文標題:輕松加愉快的 Kubernetes 安裝教程

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何使用Kubeadm命令在PetaExpress Ubuntu系統上安裝Kubernetes集群

    Kubernetes,通常縮寫為K8s,是一個開源的容器編排平臺,旨在自動化容器化應用的部署、擴展和管理。有了Kubernetes,您可以輕松地部署、更新和擴展應用,而無需擔心底層基礎設施。
    的頭像 發表于 07-15 13:31 ?832次閱讀
    如何使用Kubeadm命令在PetaExpress Ubuntu系統上<b class='flag-5'>安裝</b><b class='flag-5'>Kubernetes</b>集群

    Kubernetes的Device Plugin設計解讀

    摘要: Kubernetes的生態地位已經確立,可擴展性將是其發力的主戰場。異構計算作為非常重要的新戰場,Kubernetes非常重視。而異構計算需要強大的計算力和高性能網絡,需要提供一種統一的方式
    發表于 03-12 16:23

    Kubernetes之路 2 - 利用LXCFS提升容器資源可見性

    節點上安裝并啟動lxcfs,我們將用Kubernetes的方式,用利用容器和DaemonSet方式來運行 lxcfs FUSE文件系統。本文所有示例代碼可以通過以下地址從Github上獲得git
    發表于 04-17 14:05

    阿里云宣布推出Serverless Kubernetes服務 30秒即可完成應用部署

    Kubernetes就是乘坐一輛自動駕駛汽車,輕松享受計算的自由。其優勢在于,剝離了復雜耗時的管理運維工作,自動調配底層服務資源,該模式更符合對未來云計算的理解:用戶無需關注環境配置、服務器管理、維護升級等操作
    發表于 05-03 15:38

    理解和創建Kubernetes對象

    Kubernetes對象總結
    發表于 04-11 15:14

    Kubernetes經驗總結

    Kubernetes學習筆記——24 允許外部訪問
    發表于 06-18 12:10

    淺析Kubernetes

    【k8s】Kubernetes基礎概念
    發表于 09-27 09:11

    kubernetes部署與應用

    kubernetes運維筆記
    發表于 10-25 13:08

    Kubernetes API詳解

    摘要:Kubernetes是Google開源的容器集群管理系統。它構建Ddocker技術之上,為容器化的應用提供資源調度、部署運行、服務發現、擴容縮容等整一套功能,本文節選自龔正
    發表于 10-12 16:19 ?0次下載
    <b class='flag-5'>Kubernetes</b> API詳解

    登機助理機器人開始測試了,讓你輕松愉快的上飛機

    荷蘭皇家航空公司正在測試一款智能機器人,它能在機場幫乘客運送手提行李、指引登機口,如私人助理一樣,讓旅行更加輕松愉快
    的頭像 發表于 07-21 10:19 ?2920次閱讀

    搬家有多實用?怎么安裝iPhone版一搬家?

    安卓用戶想要輕松“搬家”數據,只要在你的 OnePlus 6T 打開一搬家,選擇“我是新手機”,接下來再選擇你舊手機的類型,點擊繼續后 OnePlus 6T 將生成一個二維碼,用舊手機上微信掃碼并安裝“一
    的頭像 發表于 11-14 14:54 ?4.9w次閱讀

    一文詳解Kubernetes架構原理

    打開這篇文章的同學,想必對 Docker 都不會陌生。Docker 是一種虛擬容器技術,它上手比較簡單,只需在宿主機上起一個 Docker Engine,然后就能愉快的玩耍了,如:拉鏡像、起容器、掛載數據、映射端口等等。相對于 Kubernetes(K8S)的上手,可
    的頭像 發表于 07-14 09:50 ?1039次閱讀

    Kubernetes是怎樣工作的?

    。 您可以將運行 Linux? 容器的主機組集群在一起,Kubernetes 可幫助您輕松高效地管理這些集群。
    的頭像 發表于 05-12 16:13 ?517次閱讀
    <b class='flag-5'>Kubernetes</b>是怎樣工作的?

    Awesome 工具如何更好地管理Kubernetes

    。 這是一系列令人驚奇的工具,它們為您的 Kubernetes 增加了更多功能。 Helm Helm 是 Kubernetes 的軟件包管理器,可以輕松地獲得高
    的頭像 發表于 06-25 16:12 ?612次閱讀
    Awesome 工具如何更好地管理<b class='flag-5'>Kubernetes</b>

    Commvault:護航Kubernetes,不止Kubernetes

    Kubernetes已經不再是只存在于路線圖中的未來產品。事實上,幾乎所有(94%)已經采用容器的企業都在使用Kubernetes,大多數(86%)企業甚至認為它對他們的運營至關重要。這并不令人意外,Kubernetes正在幫助
    的頭像 發表于 07-07 14:42 ?534次閱讀