手把手带你玩转k8s-集群创建和Hello World
前言因为公司业务发展需要,现在开始陆陆续续将swarm上的服务转到k8s了。而我也终于有机会开始k8s的学习(caikeng)之旅。这里不会对swarm和k8s进行对比,反正知道k8s比swarm更香就对了。本系列教程主要是面向想入门k8s但又无门的开发小伙伴。环境搭建本文的环境搭建并不是真的亲手去搭建,而是使用云平台的容器服务去创建k8s集群。目地很简单,专业的事就让专业的人去做。我们能把k8s
前言
因为公司业务发展需要,现在开始陆陆续续将swarm上的服务转到k8s了。而我也终于有机会开始k8s的学习(caikeng)之旅。这里不会对swarm和k8s进行对比,反正知道k8s比swarm更香就对了。本系列教程主要是面向想入门k8s但又无门的开发小伙伴。
环境搭建
本文的环境搭建并不是真的亲手去搭建,而是使用云平台的容器服务去创建k8s集群。目地很简单,专业的事就让专业的人去做。我们能把k8s使用得顺手就可以了,维护就让云平台帮做吧。当然主要原因还是想让大家能更快的上手使用k8s。云供应商很多,下面会以阿里云为例,讲述如何创建k8s集群。
准备工作
-
准备一台ECS服务器-这里叫他小A
非必需,但是建议买一台,可以选一些比较偏远的地域购买,这样会有优惠,比如华北3(张家口)
-
服务器配置
建议最低配置:
2核4G内存
网络使用按量付费
-
操作系统
建议Centos7.7
-
安装软件
docker-必装,本文就不说了,网上教程一大把。
kubectl-k8s管理工具,下面教程会说。
nginx-后续教程会涉及,所以建议安装
-
入手一个域名,这个也很便宜
安装Kubectl
源配置
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
安装
[root@mldong ~]# yum install -y kubectl
创建集群
搜索容器服务
选择创建集群
集群配置
选择Kubernetes托管版,这里注意一下地域,选择和上面说的ECS服务器小A同一个地域,这样就在同一个内网内,可以相互访问。
工作节点配置
这里使用新增实例、按量付费,然后选择一个合适的配置,这里选择较为便宜的,ecs.t6-c1m2.large。
最低要两台,操作系统可以Centos7.7,登录方式建议使用密钥的方式,也就是前面那个ECS服务器小A的公钥,如果没有,请自行创建。ssh-keygen -t rsa
,三次回车。
组件配置
使用内网,这样便宜。对外访问使用小A就可以了。存储插件选择CSI。
确认配置
现在选的这个配置算是较为便宜的了,4毛多一小时,比去网咖便宜。按量收费除了ECS服务器外,还有负载均衡-私网的,后面会教如何关闭。
集群创建检查,如果没有通过,会有教程提示,按要求做就可以了。
集群创建中
集群创建成功
查看集群信息
KubeConfig配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jgqDs8mH-1620713640284)(http://qiniu.mldong.com/mldong-article/imagesimage-20200702113414755.png)]
复制KubeConfig
[root@mldong ~]# cat /root/.kube/config
连接集群测试
[root@mldong nginx]# kubectl get node
NAME STATUS ROLES AGE VERSION
cn-zhangjiakou.172.26.22.118 Ready <none> 83m v1.16.9-aliyun.1
cn-zhangjiakou.172.26.22.119 Ready <none> 83m v1.16.9-aliyun.1
集群安全组配置
查看云服务器实例
刚新创建了两个实例
加入与小A同一个安全组
验证安全组是否配置成功
正常进入集群,则成功,不过其实并不需要进入集群,只是验证一下。
[root@mldong .kube]# ssh root@worker1 echo 666
666
镜像服务配置
因为创建的是内网的集群,外网镜像是不能直接拉取的,所以需要先配置内网能访问的镜像服务
搜索容器镜像服务
创建命名空间
创建镜像仓库
这里注意地域,要和小A的一致
访问凭证密码设置
查看仓库详情
要记一下内网的访问地址,即专有网络
开始Hello World
先制作一个镜像
拉取最新的nginx镜像
[root@mldong yaml]# docker pull nginx:latest
latest: Pulling from library/nginx
8559a31e96f4: Pull complete
8d69e59170f7: Pull complete
3f9f1ec1d262: Pull complete
d1f5ff4f210d: Pull complete
1e22bfa8652e: Pull complete
Digest: sha256:21f32f6c08406306d822a0e6e8b7dc81f53f336570e852e25fbe1e3e3d0d0133
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
给镜像添加标签
[root@mldong yaml]# docker tag nginx:latest registry-vpc.cn-zhangjiakou.aliyuncs.com/mldong/java/nginx:latest
登录镜像仓库
docker login --username=524719755@qq.com registry-vpc.cn-zhangjiakou.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
您可以在访问凭证页面修改凭证密码。
将镜像推送到镜像仓库
[root@mldong yaml]# docker push registry-vpc.cn-zhangjiakou.aliyuncs.com/mldong/java/nginx:latest
The push refers to repository [registry-vpc.cn-zhangjiakou.aliyuncs.com/mldong/java/nginx]
f978b9ed3f26: Pushed
9040af41bb66: Pushed
7c7d7f446182: Pushed
d4cf327d8ef5: Pushed
13cb14c2acd3: Pushed
latest: digest: sha256:0efad4d09a419dc6d574c3c3baacb804a530acd61d5eba72cb1f14e1f5ac0c8f size: 1362
使用kubectl发布一个nginx服务
新增个ns.yaml
文件
[root@mldong yaml]# cat ns.yaml
apiVersion: v1
kind: Namespace
metadata:
name: mldong-test
增加一个nginx_deployment.yaml
文件
[root@mldong nginx]# cat nginx_deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-pod
namespace: mldong-test
spec:
selector:
matchLabels:
app: nginx-pod
replicas: 1
template:
metadata:
labels:
app: nginx-pod
spec:
containers:
- name: nginx
image: registry-vpc.cn-zhangjiakou.aliyuncs.com/mldong/java/nginx:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
name: port
protocol: TCP
增加一个nginx_service.yaml
[root@mldong nginx]# cat nginx_service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-nodeport
namespace: mldong-test
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 32180
selector:
app: nginx-pod
创建一个命名空间
[root@mldong yaml]# kubectl apply -f ns.yaml
namespace/mldong-test created
查看所有命名空间
[root@mldong yaml]# kubectl get ns
NAME STATUS AGE
default Active 44m
kube-node-lease Active 44m
kube-public Active 44m
kube-system Active 44m
mldong-test Active 87s
创建一个pod
[root@mldong nginx]# kubectl apply -f nginx_deployment.yaml
deployment.apps/nginx-pod created
查看指定命名空间下的pod
[root@mldong nginx]# kubectl get pods -n mldong-test
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-pod-66bbff87f9-vzlvs 0/1 ContainerCreating 0 3s <none> cn-zhangjiakou.172.26.22.119 <none> <none>
[root@mldong nginx]# kubectl get pods -n mldong-test
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-pod-66bbff87f9-vzlvs 1/1 Running 0 15s 172.20.0.7 cn-zhangjiakou.172.26.22.119 <none> <none>
创建一个服务
[root@mldong nginx]# kubectl apply -f nginx_service.yaml
service/nginx-nodeport created
查看指定命名空间下的service
[root@mldong nginx]# kubectl get service -n mldong-test
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-nodeport NodePort 172.21.1.95 <none> 80:32180/TCP 76s
验证服务是否正常
访问任一节点
172.26.22.118 worker1
172.26.22.119 worker2
[root@mldong nginx]# curl worker1:32180
[root@mldong nginx]# curl worker2:32180
正常返回如下
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
到此,Hello world就结束了,为了省钱,下面得教一下如何停止或释放服务了。停止和释放后就不收钱了。
停用设置
停用实例
实例停用有两种方式,一种是仅停止不收费方式,另一种是完全释放实例的方式。如果经常要使用要练习,建议采用停止不收费的方式,这样下次就不需要重建集群。
停止不收费方式
单个停止
实例状态->停止
批量停止
停止中
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eezlDgpH-1620713640293)(http://qiniu.mldong.com/mldong-article/imagesimage-20200702142038790.png)]
已停止
停用负载均衡
搜负载均衡
完全释放实例资源
实例释放设置前要先修改实例释放保护-取消
实例释放设置
实例状态->释放设置
ECS服务器实例停止后,想再次使用,重新启动即可。启动后会重新计费。
账单名细
小结
本文使用阿里云的容器服务快速创建Kubernetes托管版 ,目地是为了更快地去学习k8s的应用。而且按量付费,费用也不会太高。比升级自己的电脑便宜。当然,除了阿里云,像腾讯云和华为云也会有类似的服务。这里只是给大家一个思路。真的,不要老想着自建,不是专业的人员,真的很难。后续的k8s系列的文章,也会在现在这个集群的基础上进行。希望有小伙伴一起入坑学习。
更多推荐
所有评论(0)