从无到有基于腾讯云TKE部署Kubernetes全流程
环境 |
---|
腾讯云TKE(重庆可用区) |
这里我们希望的是,提供一个腾讯云TKE中部署整个基础环境,以及对部分服务的一个示例。
1、创建私有网络;
云产品 ==> 私有网络 ==> 新建
2、镜像仓库;
创建容器仓库,并将我们所需的镜像制作并push到该仓库;
docker build
这里为了演示就只用 Nginx的镜像,更改一个默认页面,然后Push 上去。
代码语言:javascript复制FROM nginx:alpine
MAINTAINER jingwei
# 这里共三个版本,分为为v1,v2,v3,其他都一样九这个值不一样,所以就不一一展示了
RUN echo v3 > /usr/share/nginx/html/index.html
EXPOSE 80
CMD ["nginx","-g","daemon off;"]
代码语言:javascript复制[root@jiangjw v3]# docker build -t nginx:v3 .
Sending build context to Docker daemon 2.048kB
Step 1/5 : FROM nginx:alpine
---> 7d0cdcc60a96
Step 2/5 : MAINTAINER jingwei
---> Using cache
---> 8cf4bd502567
Step 3/5 : RUN echo v3 > /usr/share/nginx/html/index.html
---> Running in f7af5a6f10b8
Removing intermediate container f7af5a6f10b8
---> cf836953a324
Step 4/5 : EXPOSE 80
---> Running in 83ac16d9c68e
Removing intermediate container 83ac16d9c68e
---> c5cf5fe42af4
Step 5/5 : CMD ["nginx","-g","daemon off;"]
---> Running in 0f8e5598e413
Removing intermediate container 0f8e5598e413
---> 1c817e8f41ba
Successfully built 1c817e8f41ba
Successfully tagged nginx:v3
创建镜像
查看指引
docker login
登录镜像仓库
注意:密码为首次进入镜像仓库时设置的密码
docker tag
docker push
通过控制台就可以查看到push上来的镜像了
3、TKE Kuberntes集群创建;
这里我们选择托管Master。
托管 Master优点:
- Master由腾讯云运维放心,减少证书维护等等一系列麻烦;
- Master节点不用客户付费,省钱;
默认安全组
如何访问管理集群?
至此,我们的Kuberntes集群创建完毕,但是由于我们没有开启公网带宽,我们又没有Mater节点,怎么通过命令行访问该集群呢?
外网访问 or 内网访问
外网访问:
- 外部与该Kuberntes集群网络不互通的情况下,走公网访问
内网访问:
- 与该Kuberntes集群网络互通,走内网访问
这里由于我没有创建 CVM,所以我直接用本地的虚拟机,下载 kubectl命令,TKE集群开启外网访问即可管理集群。
开启公网访问
在基本信息中可以看到集群的一些信息。
集群APIServer信息
代码语言:javascript复制# 腾讯云 Kuberntes yum源
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.cloud.tencent.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
根据基本信息中,APIServer 说明,一步一步操作即可。
完成,目前可以通过远程命令行进行集群的管理。
4、创建Deployment;
创建资源控制器可以通过写yaml文件的方式,然后命令行执行,也可以通过TKE的控制台进行创建,这里我们通过TKE控制台进行创建,并查看生成的 yaml。
我们拿到生成的yaml后,后续大规模的服务迁入就可以通过该 yaml为模板进行对应字段的更改即可。
生成的完整deployment yaml文件
代码语言:javascript复制apiVersion: apps/v1beta2
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
creationTimestamp: "2020-06-22T10:29:00Z"
generation: 1
labels:
k8s-app: test-nginx
qcloud-app: test-nginx
name: test-nginx
namespace: default
resourceVersion: "44495000"
selfLink: /apis/apps/v1beta2/namespaces/default/deployments/test-nginx
uid: 14e0642a-9df6-4f1c-a99c-3faf5ddc5314
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s-app: test-nginx
qcloud-app: test-nginx
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
k8s-app: test-nginx
qcloud-app: test-nginx
spec:
containers:
- image: ccr.ccs.tencentyun.com/jingwei-tke/nginx:v1
imagePullPolicy: IfNotPresent
name: test-nginx-pod
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 250m
memory: 256Mi
securityContext:
privileged: false
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: qcloudregistrykey
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
status:
availableReplicas: 1
conditions:
- lastTransitionTime: "2020-06-22T10:29:01Z"
lastUpdateTime: "2020-06-22T10:29:01Z"
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
- lastTransitionTime: "2020-06-22T10:29:00Z"
lastUpdateTime: "2020-06-22T10:29:01Z"
message: ReplicaSet "test-nginx-77f56f6df9" has successfully progressed.
reason: NewReplicaSetAvailable
status: "True"
type: Progressing
observedGeneration: 1
readyReplicas: 1
replicas: 1
updatedReplicas: 1
由于没有与内网联通实在难用,这里我又创建了一个Node节点使用了公网带宽,从而我可以通过该公网ip进入TKE该集群。
5、创建Service;
Service 通过 selectors 标签与pod进行匹配对应
通过Service 访问测试
后续继续更新中!