<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 1.環境準備 * * * * * master:192.168.11.212 etcd master:192.168.11.213 etcd master:192.168.11.214 etcd node:192.168.11.220 node:192.168.11.221 node:192.168.11.222 haproxy:192.168.11.215 haproxy:192.168.11.216 keealived(vip):192.168.11.230 jenkins-master: jenkins-slave: jenkins-slave: harbo: harbo: zookeeper+kafka zookeeper+kafka zookeeper+kafka elk: elk: elk: * * * * * ### 2.以上環境均為ubuntu18.04系統 因為centos上docker的devicemapper性能問題 上產環境最好也使用ubuntu18.04服務器版 * * * * * ### 3.安裝master節點: * [ ] 創建目錄:mkdir -p /opt/kubernetes/{bin,ssl,cfg,log} * [ ] master和node節點必須都創建統一 * [ ] bin目錄:二進制可執行文件安放 * [ ] ssl:生成的證書安放 * [ ] cfg:配置文件及kubeconfig文件安放 * [ ] log:容器日志統一安放地點,便于為以后elf日志收集 * [ ] 在這里直接使用cfssl工具來實現證書配置,cfssl工具安裝如下: * * * * * ~~~ wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64 mv cfssl_linux-amd64 /opt/kubernetes/bin/cfssl mv cfssljson_linux-amd64 /opt/kubernetes/bin/cfssljson mv cfssl-certinfo_linux-amd64 /opt/kubernetes/bin/cfssl-certinfo ~~~ * [ ] 臨時導入環境變量:export PATH=/opt/kubernetes/bin:$PATH * [ ] 永久可以寫入/etc/profile 生成證書我們需要如下配置文件: ca-config.json文件內容如下: ```sh { "signing": { "default": { "expiry": "175200h" }, "profiles": { "kubernetes": { "expiry": "175200h", "usages": [ "signing", "key encipherment", "server auth", "client auth" ] }, "etcd": { "expiry": "175200h", "usages": [ "signing", "key encipherment", "server auth", "client auth" ] } } } } ``` 字段說明: * ca-config.json:可以定義多個Profiles,分別指定不同的過期時間、使用場景等參數;后續在簽名證書的時候使用某個Profile。這里定義了兩個Profile,一個用于kubernetes,一個用于etcd,我這里etcd沒有使用證書,所以另一個不使用。 * signing:表示該 證書可用于簽名其他證書;生成的ca.pem證書中CA=TRUE * server auth:表示client可以使用該ca對server提供的證書進行驗證 * client auth:表示server可以用該ca對client提供的證書進行驗證 * * * * * ca-csr.json內容如下: ~~~ { "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "L": "Wuhan", "ST": "Hubei", "O": "k8s", "OU": "System" } ] } ~~~ ### 生成ca證書: ``` cfssl gencert --initca=true ca-csr.json | cfssljson --bare ca ``` ### 生成kubernetes證書 kubernetes-csr.json內容如下: ```sh { "CN": "kubernetes", "hosts": [ "127.0.0.1", "localhost", "10.1.61.175", "10.1.61.176", "10.1.61.177", "10.254.0.1", "kubernetes", "kubernetes.default", "kubernetes.default.svc", "kubernetes.default.svc.cluster", "kubernetes.default.svc.cluster.local" ], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "Hubei", "L": "Wuhan", "O": "k8s", "OU": "System" } ] } 這個內容需要做下簡要說明: 上面配置hosts字段中指定授權使用該證書的IP和域名列表,因為現在要生成的證書需要被Kubernetes Master集群各個節點使用,所以這里指定了各個節點的IP和hostname。 生成kubernetes證書: ``` cfssl gencert --ca ca.pem --ca-key ca-key.pem --config ca-config.json --profile kubernetes kubernetes-csr.json | cfssljson --bare kubernetes ``` ### 生成kubectl證書 admin-csr.json內容如下: ``` ``` { "CN": "admin", "hosts": [], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "Hubei", "L": "Wuhan", "O": "system:masters", "OU": "System" } ] } ``` * kube-apiserver會提取**CN**作為客戶端的用戶名,這里是admin,將提取**O**作為用戶的屬組,這里是system:masters * 后續kube-apiserver使用RBAC對客戶端(如kubelet、kube-proxy、pod)請求進行授權 * apiserver預定義了一些RBAC使用的ClusterRoleBindings,例如cluster-admin將組system:masters與CluasterRole cluster-admin綁定,而cluster-admin擁有訪問apiserver的所有權限,因此admin用戶將作為集群的超級管理員。 ### 生成kubectl證書: ``` cfssl gencert --ca ca.pem --ca-key ca-key.pem --config ca-config.json --profile kubernetes admin-csr.json | cfssljson --bare admin ``` ### 生成kube-proxy證書 kube-proxy-csr.json內容如下: ``` { "CN": "system:kube-proxy", "hosts": [], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "Hubei", "L": "Wuhan", "O": "k8s", "OU": "System" } ] } ``` * CN指定該證書的user為system:kube-proxy * kube-apiserver預定義的RoleBinding cluster-admin將User system:kube-proxy與Role system:node-proxier綁定,該role授予了調用kube-apiserver Proxy相關API的權限; ### 生成kube-proxy證書: ``` cfssl gencert --ca ca.pem --ca-key ca-key.pem --config ca-config.json --profile kubernetes kube-proxy-csr.json | cfssljson --bare kube-proxy ``` 上面所有證書,都可以通過如下方法一下子全部生成: ``` cfssl gencert --initca=true ca-csr.json | cfssljson --bare ca for targetName in kubernetes admin kube-proxy; do cfssl gencert --ca ca.pem --ca-key ca-key.pem --config ca-config.json --profile kubernetes $targetName-csr.json | cfssljson --bare $targetName done ``` cfssl的用法中,--profile就用于指定ca-config里的哪個profiles 生成的證書列表如下: ``` ll *.pem total 48 -rw------- 1 kube kube 1679 Aug 30 16:49 admin-key.pem -rw-r--r-- 1 kube kube 1363 Aug 30 16:49 admin.pem -rw------- 1 kube kube 1675 Aug 30 16:49 ca-key.pem -rw-r--r-- 1 kube kube 1289 Aug 30 16:49 ca.pem -rw------- 1 kube kube 1679 Aug 30 16:49 kube-proxy-key.pem -rw-r--r-- 1 kube kube 1363 Aug 30 16:49 kube-proxy.pem -rw------- 1 kube kube 1679 Sep 13 13:46 kubernetes-key.pem -rw-r--r-- 1 kube kube 1586 Sep 13 13:46 kubernetes.pem 將生成好的證書移動到創建后的ssl目錄 檢驗證書: ~~~ #以kubernetes證書為例 openssl x509 -noout -text -in kubernetes.pem Certificate: Data: Version: 3 (0x2) Serial Number: 7a:a2:fa:da:4c:7a:0d:7d:fa:c1:f4:a8:af:f7:77:24:04:54:19:3f Signature Algorithm: sha256WithRSAEncryption Issuer: C = CN, ST = Hubei, L = Wuhan, O = k8s, OU = System Validity Not Before: Aug 27 11:50:00 2018 GMT Not After : Aug 22 11:50:00 2038 GMT Subject: C = CN, ST = Hubei, L = Wuhan, O = k8s, OU = System, CN = kubernetes Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:b8:00:1e:bb:a8:75:2c:07:32:5b:da:d5:23:25: c2:0f:c9:10:08:5b:78:40:78:90:4a:59:e3:cc:64: 36:1a:29:c1:ea:fe:01:f4:88:2f:73:be:20:98:b9: 09:e9:c1:13:a7:b8:26:5f:54:52:21:0a:89:03:c8: d3:33:a1:be:20:bb:03:d7:5b:e4:19:46:e2:e9:67: e7:89:3a:68:2d:f9:c8:66:54:ce:dd:7d:99:fd:1b: a7:32:e2:44:b5:ba:14:f0:60:94:38:51:ff:2b:2c: fe:7c:f3:55:1b:4c:19:d8:ad:10:10:08:c3:db:2e: 65:46:36:e9:63:ea:7c:3a:75:b7:59:a5:90:7f:16: 2d:be:56:16:c8:f0:fe:40:6d:1e:bf:9f:ff:4c:9c: cb:57:4b:a9:04:7a:61:ce:9b:91:86:c2:19:1b:a5: be:82:b2:75:e5:8c:fb:65:ce:cf:ad:72:c6:6d:85: 19:c7:ce:a9:86:72:79:51:bf:4f:2f:c2:03:e8:34: 9a:12:8c:0b:57:ac:90:39:69:56:0e:00:3b:15:32: fd:fa:77:de:a8:7e:46:5e:86:e3:60:ac:41:56:80: 00:59:4c:a7:a1:f5:78:0f:1e:1c:a6:9e:7e:f8:93: c5:aa:f8:22:b0:c4:e3:f9:24:92:f8:b7:09:ad:e9: 76:c1 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Key Usage: critical Digital Signature, Key Encipherment X509v3 Extended Key Usage: TLS Web Server Authentication, TLS Web Client Authentication X509v3 Basic Constraints: critical CA:FALSE X509v3 Subject Key Identifier: F8:B2:8A:9F:D7:42:A5:33:D1:A0:23:29:FD:42:06:4A:80:2F:1D:F6 X509v3 Authority Key Identifier: keyid:8E:DD:D0:C9:6B:3D:D8:CA:ED:5B:FD:86:48:65:AD:CC:D6:3F:B6:B6 X509v3 Subject Alternative Name: DNS:localhost, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster, DNS:kubernetes.default.svc.cluster.local, IP Address:127.0.0.1, IP Address:192.168.11.212, IP Address:192.168.11.213, IP Address:192.168.11.214, IP Address:192.168.11.215, IP Address:192.168.11.216, IP Address:192.168.11.222, IP Address:192.168.11.221, IP Address:192.168.11.220, IP Address:192.168.11.230, IP Address:172.16.0.1 Signature Algorithm: sha256WithRSAEncryption 11:4f:5c:44:5b:0c:d1:ca:d4:aa:d8:47:16:63:f9:4b:8f:b0: a7:7c:58:42:2f:ea:dd:80:b6:ae:0e:1d:8b:72:b7:40:ba:9e: a2:3b:9f:fb:04:10:4d:bd:59:0c:08:ea:2e:54:a8:0d:63:02: 6d:94:78:be:72:b2:2f:8d:b1:c2:c0:bf:a4:19:45:8d:b6:b4: d8:28:58:c6:e9:75:c8:4a:49:51:72:33:04:6e:52:25:60:57: cc:fe:0e:83:35:b8:cb:1d:28:ed:cd:9d:7b:5b:49:8b:3a:56: 09:3f:ea:80:8a:ca:bd:4f:d9:c4:f7:90:bb:f0:55:be:c6:86: bc:0a:7a:2c:41:a1:19:42:b3:51:ee:f9:7d:7b:70:f7:46:2b: 40:f0:25:e2:2d:f7:fc:00:50:7a:7f:48:e1:7d:81:2b:f6:dd: f4:59:35:df:f9:af:2c:be:c3:c3:19:7b:94:9f:94:ec:e9:05: 74:29:c7:e8:40:f2:0b:ac:8c:df:81:8e:d4:0c:aa:ad:71:49: 99:71:d6:b3:f3:28:92:e5:9d:d8:1f:ad:a4:6e:43:d3:67:40: 5a:64:26:d3:0b:0a:79:90:50:1f:13:c7:99:90:14:d2:d5:ad: 82:96:63:ca:3d:21:79:9c:a7:26:0f:a2:1c:5c:d4:b8:5c:13: fb:bf:87:cc ``` * 確認 Issuer 字段的內容和 ca-csr.json 一致; * 確認 Subject 字段的內容和 kubernetes-csr.json 一致; * 確認 X509v3 Subject Alternative Name 字段的內容和 kubernetes-csr.json 一致; * 確認 X509v3 Key Usage、Extended Key Usage 字段的內容和 ca-config.json 中 kubernetesprofile 一致; # 生成token及kubeconfig 在本次配置中,我們將會同時啟用證書認證,token認證,以及http basic認證。所以需要提前生成token認證文件,basic認證文件以及kubeconfig ## 生成客戶端使用的token ``` export BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ' ') cat > bootstrap-token.csv <<EOF ${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kubelet-bootstrap" EOF ``` 生成bashboard使用的http basic認證文件 ``` cat > basic_auth.csv <<EOF 123456,admin,1,"system:masters" EOF ``` 生成kubeconfig ``` export KUBE_APISERVER="https://keepalived的虛擬ip:6443" ``` **#### # 設置集群參數,即api-server的訪問方式,給集群起個名字就叫kubernetes** ``` kubectl config set-cluster kubernetes \ --certificate-authority=ca.pem \ --embed-certs=true \ --server=${KUBE_APISERVER} \ --kubeconfig=bootstrap.kubeconfig ``` **#### # 設置客戶端認證參數,這里采用token認證** ``` kubectl config set-credentials kubelet-bootstrap \ --token=${BOOTSTRAP_TOKEN} \ --kubeconfig=bootstrap.kubeconfig ``` **#### # 設置上下文參數,用于連接用戶kubelet-bootstrap與集群kubernetes** ``` kubectl config set-context default \ --cluster=kubernetes \ --user=kubelet-bootstrap \ --kubeconfig=bootstrap.kubeconfig ``` #### # 設置默認上下文 ``` kubectl config use-context default --kubeconfig=bootstrap.kubeconfig ``` #### kube-proxy的kubeconfig配置如下,與上面基本相同:** ``` # 設置集群參數 kubectl config set-cluster kubernetes \ --certificate-authority=ca.pem \ --embed-certs=true \ --server=${KUBE_APISERVER} \ --kubeconfig=kube-proxy.kubeconfig # 設置客戶端認證參數 kubectl config set-credentials kube-proxy \ --client-certificate=kube-proxy.pem \ --client-key=kube-proxy-key.pem \ --embed-certs=true \ --kubeconfig=kube-proxy.kubeconfig # 設置上下文參數 kubectl config set-context default \ --cluster=kubernetes \ --user=kube-proxy \ --kubeconfig=kube-proxy.kubeconfig # 設置默認上下文 kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig ``` # 部署master master端涉及kube-apiserver, kube-controller-manager以及kube-scheduler三個組件。所有組件我們都使用二進制包的方式安裝。kubernetes源代碼地址:https://github.com/kubernetes/kubernetes 我們可以通過git clone的方式把源代碼下載到本地,并checkout出1.10版本。然后執行編譯,編譯之后,所有的二進制文件都未于源代碼目錄的_output目錄中。我們獲取我們所需要的二進制組件即可。另外需要說明的是,編譯需要依賴go開發環境。 ``` git clone https://github.com/kubernetes/kubernetes.git cd kubernetes git checkout release-1.11 make ``` 另外,我們還需要將前面生成的ca證書及key,kubernetes的證書及key以及kubectl的證書及key分發到各個master節點的/opt/kubernetes/ssl目錄中。 我這里使用的的是下載編譯好的二進制安裝包 server 的 tarball kubernetes-server-linux-amd64.tar.gz 已經包含了 client(kubectl) 二進制文件,所以不用單獨下載kubernetes-client-linux-amd64.tar.gz文件; ``` wget https://dl.k8s.io/v1.11.1/kubernetes-server-linux-amd64.tar.gz tar -xzvf kubernetes-server-linux-amd64.tar.gz cd kubernetes tar -xzvf kubernetes-src.tar.gz cp -r server/bin/{kube-apiserver,kube-controller-manager,kube-scheduler,kubectl,kube-proxy,kubelet} /opt/kubernetes/bin/ chomd +x * ```
                  <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>

                              哎呀哎呀视频在线观看