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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] ## Kubernetes操作 首先我們要了解Kubernetes在運行我們的資源時,資源的構建方式: * 采用kubectl的命令方式 * yaml文件方式 ### Namespace * 命名空間:主要是為了對Kubernetes中運行的資源進行過隔離, 但是網絡是互通的,類似Docker的容器,可以將多個資源配置到一個NameSpace中。而NameSpace可以對不同環境進行資源隔離,默認情況下Kubernetes提供了default命名空間,在構建資源時,如果不指定資源,默認采用default資源。 命令方式: ```sh # 查看現有的全部命名空間 kubectl get ns # 構建命名空間 kubectl create ns 命名空間名稱 # 刪除現有命名空間, 并且會刪除空間下的全部資源 kubectl delete ns 命名空間名稱 ``` yaml文件方式:(構建資源時,設置命名空間) ```yaml apiVersion: v1 kind: Namespace metadata: name: test ``` ### Pod * Pod:Kubernetes運行的一組容器,Pod是Kubernetes的最小單位,但是對于Docker而然,Pod中會運行多個Docker容器 * 命令方式: ```bash # 查看所有運行的pod kubectl get pods -A # 查看指定Namespace下的Pod kubectl get pod [-n 命名空間] #(默認default) # 創建Pod kubectl run pod名稱 --image=鏡像名稱 # 查看Pod詳細信息 kubectl describe pod pod名稱 # 刪除pod kubectl delete pod pod名稱 [-n 命名空間] #(默認default) # 查看pod輸出的日志 kubectl logs -f pod名稱 # 進去pod容器內部 kubectl exec -it pod名稱 -- bash # 查看kubernetes給Pod分配的ip信息,并且通過ip和容器的端口,可以直接訪問 kubectl get pod -owide ``` * yaml方式(推薦) ```yaml apiVersion: v1 kind: Pod metadata: labels: run: 運行的pod名稱 name: pod名稱 namespace: 命名空間 spec: containers: - image: 鏡像名稱 name: 容器名稱 # 啟動Pod:kubectl apply -f yaml文件名稱 # 刪除Pod:kubectl delete -f yaml文件名稱 ``` * Pod中運行多個容器 ```yml apiVersion: v1 kind: Pod metadata: labels: run: 運行的pod名稱 name: pod名稱 namespace: 命名空間 spec: containers: - image: 鏡像名稱 name: 容器名稱 - image: 鏡像名稱 name: 容器名稱 ``` 啟動后可以查看到 | Kuboard效果 | | :----------------------------------------------------------: | | ![](https://img.kancloud.cn/75/89/75897917599974c3d3de9e06e250002b_1917x963.png) | ### Deployment 部署時,可以通過Deployment管理和編排Pod Deployment部署實現 - 命令方式 ```sh # 基于Deployment啟動容器 kubectl create deployment deployment名稱 --image=鏡像名稱 # 用deployment啟動的容器會在被刪除后自動再次創建,達到故障漂移的效果 # 需要使用deploy的方式刪除deploy # 查看現在的deployment kubectl get deployment # 刪除deployment kubectl delete deployment deployment名稱 # 基于Deployment啟動容器并設置Pod集群數 kubectl create deployment deployment名稱 --image=鏡像名稱 --replicas 集群個數 ``` - [配置文件方式](https://kubernetes.io/zh/docs/concepts/workloads/controllers/deployment/) ```yml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 ``` 正常使用kubectl運行yaml即可 彈性伸縮功能 ```sh # 基于scale實現彈性伸縮 kubectl scale deploy/Deployment名稱 --replicas 集群個數 # 或者修改yaml文件 kubectl edit deploy Deployment名稱 ``` | 圖形化頁面修改 | | :----------------------------------------------------------: | | ![](https://img.kancloud.cn/db/6d/db6d66d9f49f07f5ab7c3eb30924d451_1918x795.png)| 灰度發布 Deploy可以在部署新版本數據時,成功啟動一個pod,才會下線一個老版本的Pod ```shell kubectl set image deployment/Deployment名稱 容器名=鏡像:版本 ``` ### Service 可以將多個Pod對外暴露一個Service,讓客戶端可以通過Service訪問到這一組Pod,并且可以實現負載均衡 ClusterIP方式: ClusterIP是集群內部Pod之間的訪問方式 - 命令實現效果 ```sh # 通過生成service映射一個Deployment下的所有pod中的某一個端口的容器 kubectl expose deployment Deployment名稱 --port=Service端口號 --target-port=Pod內容器端口 ``` 之后通過`kubectl get service`查看Service提供的ip,即可訪問 | kubectl get service | | :----------------------------------------------------------: | | ![](https://img.kancloud.cn/66/14/66148ef145477314f7e038f85f96b0b9_866x263.png) | 也可以通過`Deployment名稱.namespace名稱.svc`作為域名訪問 | 在服務容器內執行 | | :----------------------------------------------------------: | | ![](https://img.kancloud.cn/5f/70/5f70848d6f9cde40b996898035829309_980x259.png) | NodePort方式 ClusterIP的方式只能在Pod內部實現訪問,但是一般需要對外暴露網關,所以需要NodePort的方式Pod外暴露訪問 - 命令實現方式 ```sh # 通過生成service映射一個Deployment下的所有pod中的某一個端口的容器 kubectl expose deployment Deployment名稱 --port=Service端口號 --target-port=Pod內容器端口 --type=NodePort ``` | 查看Service效果 | | :----------------------------------------------------------: | | ![](https://img.kancloud.cn/18/bd/18bd1ef013f4aa1ab68985ffca5edc1d_1345x172.png) | | ![](https://img.kancloud.cn/de/73/de73371db0b28e074121bcda8bf1814e_812x170.png)| Service也可以通過yaml文件實現 ```yaml apiVersion: v1 kind: Service metadata: labels app: nginx name: nginx spec: selector: app: nginx ports: - port: 8888 protocol: TCP targetPort: 80 ``` 通過apply啟動就也可以創建Service 測試效果-Deployment部署,通過Service暴露 ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx-deployment spec: replicas: 2 selector: matchLabels: app: nginx-deployment template: metadata: labels: app: nginx-deployment spec: containers: - name: nginx-deployment image: nginx ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: labels: app: nginx-service name: nginx-service spec: selector: app: nginx-deployment ports: - port: 8888 protocol: TCP targetPort: 80 type: NodePort ``` 可以查看到暴露的信息 | Service信息 | | :----------------------------------------------------------: | |![](https://img.kancloud.cn/4a/38/4a387b6520bbf8258f676f09a9332c5b_907x93.png)| ### Ingress Kubernetes推薦將Ingress作為所有Service的入口,提供統一的入口,避免多個服務之間需要記錄大量的IP或者域名,畢竟IP可能改變,服務太多域名記錄不方便。 Ingress底層其實就是一個Nginx, 可以在Kuboard上直接點擊安裝 | Kuboard安裝 | | :----------------------------------------------------------: | | ![](https://img.kancloud.cn/0c/67/0c67bd3fbfbf4c0967217161383135ad_1917x566.png) | | ![](https://img.kancloud.cn/a4/32/a432443dc9c54207c519595b9cb1ecdd_1860x740.png) | 因為副本數默認為1,但是k8s整體集群就2個節點,所以顯示下面即為安裝成功 | 安裝成功 | | :----------------------------------------------------------: | | ![](https://img.kancloud.cn/db/bd/dbbde90380d50defb5d18b66f9e99dfb_1902x862.png) | 可以將Ingress接收到的請求轉發到不同的Service中。 推薦使用yaml文件方式 ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nginx-ingress spec: ingressClassName: ingress rules: - host: nginx.mashibing.com http: paths: - path: / pathType: Prefix backend: service: name: nginx-service port: number: 8888 ``` | 啟動時問題 | | :----------------------------------------------------------: | | ![](https://img.kancloud.cn/66/50/6650adcc9545ced2c16fcc7373b3832e_1876x114.png) | Kuboard安裝的Ingress有admission的校驗配置,需要先刪除配置再啟動 找到指定的ingress的校驗信息,刪除即可 | 刪除信息 | | :----------------------------------------------------------: | | ![](https://img.kancloud.cn/c2/7f/c27f4ce18d92ad0c231b982f82b80963_1413x180.png) | ```sh # 查看校驗webhook的配置 kubectl get -A ValidatingWebhookConfiguration # 刪除指定的校驗 kubectl delete ValidatingWebhookConfiguration ingress-nginx-admission-my-ingress-controller ``` 配置本地hosts文件 | 配置hosts | | :----------------------------------------------------------: | | ![](https://img.kancloud.cn/36/b5/36b566aa81e32cfaec02840cf77a1585_1117x539.png) | 記下來既可以訪問在Service中暴露的Nginx信息 | 服通過Ingress訪問 | | :----------------------------------------------------------: | | ![](https://img.kancloud.cn/5f/64/5f64761762042aa5c75fdbfce9c06f32_779x148.png) |
                  <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>

                              哎呀哎呀视频在线观看