从无到有基于腾讯云TKE部署Kubernetes全流程(一)

2020-06-24 14:57:54 浏览数 (1)

从无到有基于腾讯云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 访问测试

后续继续更新中!

0 人点赞