16.2 騰訊雲
騰訊雲容器服務 TKE 是騰訊雲提供的 Kubernetes 託管服務,適合把容器化應用部署到雲上。官方文件見 騰訊雲容器服務。
圖 16-1:騰訊雲標識
下面的範例只保留建立叢集、部署應用、管理映象和設定加速器這幾類最常見操作。

圖 16-2:騰訊雲容器服務示意圖
騰訊雲容器服務:TKE 簡介
騰訊雲容器服務 (TKE, Tencent Kubernetes Engine) 是一款容器編排平台,基於原生 Kubernetes 提供,支援自動擴充套件、負載均衡、多可用區高可用等企業級功能。TKE 幫助開發者快速部署和管理容器化應用,消除叢集運維的複雜度。
基本使用步驟
1. 建立叢集
登入騰訊雲控制台,進入容器服務模組:
- 選擇 『建立叢集』,設定叢集名稱、地域和網路
- 選擇節點設定(雲服務器規格和數量)
- 設定 Kubernetes 版本和安全組
- 完成建立後獲得叢集 kubeconfig 檔案
# 下載 kubeconfig 檔案後,設定本地環境
export KUBECONFIG=/path/to/kubeconfig.yaml
kubectl cluster-info
2. 部署容器應用
建立 Deployment 部署應用:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-app
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
應用設定檔案:
kubectl apply -f deployment.yaml
kubectl get pods
kubectl get svc
3. 管理映象
使用騰訊雲容器映象服務 (TCR) 儲存和分發私有映象:
# 登入騰訊雲映象倉庫
docker login ccr.ccs.tencentyun.com -u <username>
# 標記本地映象
docker tag my-app:latest ccr.ccs.tencentyun.com/namespace/my-app:latest
# 推送映象到騰訊雲
docker push ccr.ccs.tencentyun.com/namespace/my-app:latest
騰訊雲 Docker 映象加速器設定
如果你的賬號開通了映象加速器,可以把控制台給出的地址寫入 Docker 設定。
Linux 系統設定
編輯 /etc/docker/daemon.json 檔案(如果不存在則建立):
# 建立或編輯設定檔案
sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json
新增以下內容:
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
],
"insecure-registries": []
}
重啟 Docker 服務:
sudo systemctl daemon-reload
sudo systemctl restart docker
驗證設定:
docker info | grep -A 5 "Registry Mirrors"
Windows/Mac 設定
對於 Docker Desktop,在設定介面中開啟 Docker Engine,把上述 registry-mirrors 欄位寫入 JSON 後重啟即可。
騰訊雲容器映象服務:TCR
TCR 提供私有映象倉庫、訪問控制和映象分發能力。一個最小範例如下:
# 登入到騰訊雲 TCR
docker login ccr.ccs.tencentyun.com --username <username>
# 建立並推送映象
docker build -t my-app:v1.0 .
docker tag my-app:v1.0 ccr.ccs.tencentyun.com/my-namespace/my-app:v1.0
docker push ccr.ccs.tencentyun.com/my-namespace/my-app:v1.0
TKE 叢集中使用 TCR 映象
設定映象拉取憑證後,在 Deployment 中直接引用 TCR 映象。Secret 必須建立在使用它的 namespace 中;下面範例使用 default namespace。
$ kubectl create secret docker-registry tcr-secret \
--docker-server=ccr.ccs.tencentyun.com \
--docker-username=<username> \
--docker-password=<token-or-password> \
--namespace=default
安全提示:在指令行直接輸入密碼或 token 可能進入 shell 歷史記錄。生產環境可先
docker login,再基於受保護的~/.docker/config.json建立kubernetes.io/dockerconfigjsonSecret,或使用雲廠商提供的託管憑據整合。
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-deployment
namespace: default
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
imagePullSecrets:
- name: tcr-secret
containers:
- name: my-app
image: ccr.ccs.tencentyun.com/my-namespace/my-app:v1.0
ports:
- containerPort: 8080
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"