k8s应用01-----入门实例
安装一个单机版的K8S
1、关闭防火墙firewalld
2、安装etcd和kubernetes
yum install -y etcd kubernetes(会自动安装docker)
3、修改配置文件
修改docker配置文docker
修改为
OPTIONS='--selinux-enabled=false --insecure-registry gcr.io'
修改kubernetes配置文件
vi /etc/kubernetes/apiserver
KUBE_ADMISSION_CONTROL参数中删除ServiceAccount
4、按顺序启动服务
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
检查状态
systemctl status etcd
systemctl status docker
systemctl status kube-apiserver
systemctl status kube-controller-manager
systemctl status kube-scheduler
systemctl status kubelet
systemctl status kube-proxy
一个单机版本的kuberneted就搭建完毕了
启动一个mysql服务
1、为MySQL服务创建一个RC定义文件:mysql-rc.yaml。RC(Replication Controller)定义文件中有3个关键信息:
- 目标Pod的定义。
- 目标Pod需要运行的副本数量(Replicas)
- 要监控的目标Pod的标签(Label),Label是Service和Pod之间的纽带
[root@router ljy]# more mysql-rc.yaml apiVersion: v1 kind: ReplicationController #副本控制器RC metadata: name: mysql #RC的名称,全局唯一 spec: replicas: 1 #Pod副本的期待数量 selector: app: mysql #符合目标的Pod拥有此标签 template: #根据此模板创建Pod的副本(实例) metadata: labels: app: mysql #Pod副本拥有的标签,对应RC的Selector spec: containers: #Pod内容器的定义部分 - name: mysql #容器的名称 image: hub.c.163.com/library/mysql #容器对应的Docker image ports: - containerPort: 3306 #容器应用监听的端口号 env: #注入容器内的环境变量 - name: MYSQL_ROOT_PASSWORD value: "123456"
2、创建好mysql-rc.yaml后,在master节点使用kubectl命令将它发布到k8s集群中。
kubectl create -f mysql-rc.yaml
使用kubectl命令查看刚刚创建的RC:
使用下面命令查看Pod的创建情况:
3、创建关联service
我们创建一个与之关联的Kubernetes Service-MySQL的定义文件:mysql-svc.yaml
apiVersion: v1 kind: Service #表明是K8s Service metadata: name: mysql #Service的全局唯一名称 spec: ports: - port: 3306 #Service提供服务的端口号 selector: #Service对应的Pod拥有这里定义的标签 app: mysql 复制代码
运行kubectl命令,创建service
kubectl create -f mysql-svc.yaml
查看刚刚创建的service
kubectl get svc
注意到MySQL服务被分配到了一个值为10.254.46.214的Cluster IP地址,这是一个虚地址,随后,k8s集群中其他新创建的Pod就可以通过Service的Cluster IP+端口号3306来连接和访问它了
启动一个web服务
1、先拉取一个镜像
docker pull kubeguide/tomcat-app:v1
2、创建对应的RC文件myweb-rc.yaml,内容如下
apiVersion: v1 kind: ReplicationController metadata: name: myweb spec: replicas: 5 #Pod副本期待数量为5 selector: app: myweb template: metadata: labels: app: myweb spec: containers: - name: myweb image: docker.io/kubeguide/tomcat-app:v1 ports: - containerPort: 8080 env: - name: MYSQL_SERVICE_HOST value: "mysql" - name: MYSQL_SERVICE_PORT value: "3306"
然后通过kubectl create命令完成RC的创建和验证工作:
kubectl create -f myweb-rc.yaml kubectl get rc kubectl get pods
在RC中声明了5个Pod期待的数量,现在都已经建立并运行起来了
3、创建对应的Service
创建对应的Service,以下是完整的yaml定义文件(myweb-svc.yaml)
apiVersion: v1 kind: Service metadata: name: myweb spec: type: NodePort ports: - port: 8080 nodePort: 30001 selector: app: myweb
type=NodePort和nodePort=30001的两个属性,表明此Service开启了NodePort方式的外网访问模式。
运行kubectl create命令进行创建:
kubectl create -f myweb-svc.yaml
查看一下
kubectl get services