K8s权威指南学习
第一章 k8s入门(简单的Java web项目)
环境: VMware Workstation在本机虚拟一个64位的Centos7虚拟机
环境准备
-
关闭防火墙
systemctl disable firewalld systemctl stop firewalld
-
安装etcd和Kubernetes软件(会自动安装Docker软件)
yum install -y etcd kubernetes
-
按顺序启动所有服务
systemctl start etcd systemctl start docker systemctl start kube-apiserver systemctl start kube-controller-manager systemctl start kube-scheduler systemctl start kubelet systemctl start kube-proxy
启动MySQL服务
-
MySQL镜像
docker pull daocloud.io/library/mysql:latest
-
构建Mysql RC定义文件(可以使用vim创建),命名mysql-rc.yaml 内容如下:
apiVersion: v1 kind: ReplicationController metadata: name: mysql spec: replicas: 1 selector: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: mysql ports: - containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD value: "123456"
-
发布到kubernetes集群中,在master节点执行命令(注:此时可能出现问题,如:问题1:no resource found,问题2:status的状态是ContainerCreating而不是running,如果出现此问题请看关于创建rc和pod出现的问问题)
$ kubectl create -f mysql-rc.yaml replicationcontroller "mysql" created
查看创建的rc
$ kubectl get rc NAME DESIRED CURRENT READY AGE mysql 1 1 1 14s
查看pod创建情况
$ kubectl get pods NAME READY STATUS RESTARTS AGE mysql-srd1m 1/1 Running 0 41s
-
创建一个与之关联的k8s Service-Mysql的定义文件(文件名为mysql-svc.yaml),内容如下:
apiVersion: v1 kind: Service metadata: name: mysql spec: ports: - port: 3306 selector: app: mysql
运行kubectl命令,创建service
kubectl create -f mysql-svc.yaml
查看刚刚创建的service
$ kubectl get svc NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes 10.254.0.1 <none> 443/TCP 8d mysql 10.254.55.41 <none> 3306/TCP 13s
启动Tomcat服务
- 拉取Tomcat镜像
docker pull kubeguide/tomcat-app:v2
- 构建Tomcat RC定义文件,命名myweb-rc.yaml 内容如下:
完成rc创建和验证apiVersion: v1 kind: ReplicationController metadata: name: myweb spec: replicas: 2 selector: app: myweb template: metadata: labels: app: myweb spec: containers: - name: myweb image: kubeguide/tomcat-app:v1 ports: - containerPort: 8080
$ kubectl create -f myweb-rc.yaml replicationcontroller "myweb" created $ kubectl get rc NAME DESIRED CURRENT READY AGE mysql 1 1 1 23h myweb 2 2 2 12s $ kubectl get pods NAME READY STATUS RESTARTS AGE mysql-srd1m 1/1 Running 1 23h myweb-fqlvz 1/1 Running 0 40s myweb-ggrlg 1/1 Running 0 40s
- 创建对应的Service,文件名(myweb-svc.yaml),内容如下
创建并验证apiVersion: v1 kind: Service metadata: name: myweb spec: type: NodePort ports: - port: 8080 nodePort: 30001 selector: app: myweb
$ kubectl create -f myweb-svc.yaml service "myweb" created $ kubectl get services NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes 10.254.0.1 <none> 443/TCP 8d mysql 10.254.55.41 <none> 3306/TCP 42m myweb 10.254.237.187 <nodes> 8080:30001/TCP 21s
本文转移开源中国-K8s权威指南学习

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
k8s最佳实践
构建小的镜像 通过下面两种方式可以减小构建镜像大小: Small Base Images:有些base镜像有非常齐全的工具链,考虑考虑是否需要这些工具链,还是只需要精简镜像版镜像并补充所需的工具 Builder Pattern:对于一些go、c语言项目,使用docker提供的builder pattern,先构建一个容器用来编译代码,并将编译结果拷贝到最终镜像中,最终镜像就是一个精简版linux镜像+可执行文件 小镜像可以提升两点: 性能:提升构建、上传、下载镜像的时间,可以极大降低新加宿主机的负载 安全性:镜像越小代表容器越小,容器越小代表容器可以被攻击的地方就越少,也就越安全 使用namespace 使用namespace将集群资源切分成多块,可以提高集群内部隔离性、管理效率和性能 使用Readiness和Liveness Probes做health check k8s提供了两种容器的health check机制: Readiness:用来check容器是否可以接收流量,如果check失败,就不让容器接收流量 Liveness:用来check容器是否存活,如果check失败,就重启...
- 下一篇
在K8s中创建StatefulSet
遇到的问题: 使用Deployment创建的Pod是无状态的,当挂在Volume之后,如果该Pod挂了,Replication Controller会再run一个来保证可用性,但是由于是无状态的,Pod挂了的时候与之前的Volume的关系就已经断开了,新起来的Pod无法找到之前的Pod。但是对于用户而言,他们对底层的Pod挂了没有感知,但是当Pod挂了之后就无法再使用之前挂载的磁盘了。 解决方案 使用K8s v1.5版本推出的StatefulSet可以保留Pod的状态。 参考博客 因为Kubernetes1.5版本发布也没过多久,国内的资料相当的少,除了tonybai等大牛博客上有一些StatefulSet的资料外,只能去外网上搜索了。通过在google上搜索StatefulSet的创建方式,最终发现了一篇英文博客,链接如下。对于这种新兴框架,还是要多去google啊。 https://thenewstack.io/deploy-highly-available-wordpress-instance-statefulset-kubernetes-1-5/ 如何创建 在创建Statefu...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker安装Oracle12C,快速搭建Oracle学习环境