K8S个人vm虚拟机操作过程
热身熟悉一下流程https://www.katacoda.com/courses/kubernetes/playgroundkubernetes学习网站create a cluster——interactive tutorial——creating a cluster或者直接点击 start scenario一般启动后就要执行 minikube start命令,接着执行命令 ...
·
热身熟悉一下流程
https://www.katacoda.com/courses/kubernetes/playground
kubernetes学习网站
create a cluster——interactive tutorial——creating a cluster
或者直接点击 start scenario
一般启动后就要执行 minikube start命令 ,接着执行命令 kubectl get nodes 表示创建一个单节点的kubernetes集群。
通过kubernetes的命令行工具kubectl远程管理集群。
kuberctl ccluster-info查看集群信息,heapser、kubernetes-dashboard是集群中运行的服务。
部署应用:执行命令 kubectl run kubernetes-bootcamp \
--image= docker.io/jocatalin/kubernetes-bootcamp:v1 \
--port=8080 (这里通过kubectl run部署应用名为kubernetesbootcamp,docker镜像通过--image指定,--port设置应用对外服务的端口)
Deployment可以理解为应用;pod是容器集合,同一个pod的所有容器共享ip地址和port空间。
kubectl get pods查看当前的pod。
为了能从外部访问应用,需要将容器的8080端口映射到节点的端口,执行命令
kubectl expose deployment/kubernetes-bootcamp \
--type="NodePort" \
--port 8080
执行命令 kubectl get services查看应用映射到节点的哪个端口。执行命令 curl host01:32320可以访问应用(32320位映射到host01的端口)
命令kubectl get deployments可以查看副本数;执行以下命令可以将副本数增加到3个
kubectl scale deployments/kubernetes-bootcamp --replicas=3
通过kubectl get pods 可以查看pod增加3个。
要缩小规模(scale down)执行以下命令 :
kubectl scale deployments/kubernetes-bootcamp --replicas=2
当前image版本为v1,执行以下命令升级到v2
kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
kubectl get pods可以观察滚动更新的过程。
回退到v1版本执行以下命令:
kubectl rollout undo deployments/kubernetes-bootcamp
概念
1.什么是k8s
k8s是一组服务器集群
k8s所管理的集群节点上的容器
Cluster是计算、存储和网络资源集合;——Master是Clister的大脑(它运行在linux系统上可以是物理机或者虚拟机)——Node运行容器应用(由Master管理,它只是监控和汇报)——Pod是k8s最小工作单位,包含一个或者多个容器(它里面容器会作为一个整体给Master调度到一个Node上运行)
2.k8s的功能
自我修复
弹性伸缩:实时根据服务器的并发情况,增加或缩减容器数量
自动部署:
回滚:
服务发现和负载均衡
机密和配置共享管理
3.k8s集群分为两类节点
master node:主
worker node:工作
master节点的组件(程序)
apiserver:接受客户端操作可k8s的指令
schduler:从多个worker node节点的组件中选举一个来启动服务
controller manager:向worker节点的kubelet发送指令的
node节点的组件(程序)
kubelet:向docker发送指令管理docker容器的
kubeproxy:管理docker容器的网络
etcd
k8s的数据库
用来注册节点、服务、记录账户....
4.核心概念
pod
pod是k8s最小部署单元
一个pod中可以有一个或者多个容器一组容器
pod又称为容器组
Controllers:控制器,控制pod,启动、停止、删除
ReplicaSet
Deployment
StatefulSet
DaemonSet
Job
Cronjob
service:服务
将一组pod关联起立,提供一个统一的入口
即使pod地址发生改变,这个统一入口也不会变化,可以保证用户访问不受影响
label:标签
一组pod是一个统一的标签
service是通过标签和一组pod进行关联的
namespace:名称空间
用来隔离pod的运行环境【默认情况下,pod是可以互相访问】
使用场景
为不同的公司提供隔离的pod运行环境
为开发环境、测试环境、生产环境分别准备不同的名称空间,进行隔离
5.k8s中是否能直接启动容器?
架构类别
单master
多master - 生产环境
生产环境k8s规划
master建议3台
etcd必须三台(3,5,7)
worder越多越好
实验环境规划
三个节点
2G内存
2核CPU
部署单master集群
一、集群规划
master
主机名:k8s-master1
IP:192.168.31.63
worker1
主机名:k8s-node1
IP:192.168.31.65
worker1
主机名:k8s-node2
IP:192.168.31.66
k8s版本:1.16
安装方式:离线-二进制
操作系统版本:7.7
二、初始化服务器
1 关闭防火墙
【所有主节点都执行】
[root@k8s-master1 ~]# systemctl stop firewalld
[root@k8s-master1 ~]# systemctl disable firewalld
2 关闭selinux
【所有主节点都执行】
# setenforce 0
# vim /etc/selinux/config
修改SELINUX=enforcing 为 SELINUX=disabled
3 配置主机名
【所有主节点都执行】
hostnamectl set-hostname 主机名
4 配置名称解析
【所有主节点都执行】
# vi /etc/hosts
添加如下四行
192.168.31.63 k8s-master1
192.168.31.64 k8s-master2
192.168.31.65 k8s-node1
192.168.31.66 k8s-node2
5 配置时间同步
选择一个节点作为服务端,剩下的作为客户端
master1为时间服务器的服务端
其他的为时间服务器的客户端
1)配置k8s-master1
# yum install chrony -y
# vim /etc/chrony.config
修改三项
server 127.127.1.0 iburst
allow 192.168.31.0/24
local stratum 10
# systemctl start chronyd
# systemctl enable chronyd
# ss -unl | grep 123
UNCONN 0 0 *:123 *:*
2)配置k8s-node1 和k8s-node2
# yum install chrony -y
# vim /etc/chrony.config
server 192.168.31.63 iburst
# systemctl start chronyd
# systemctl enable chronyd
# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* k8s-master1 10 6 17 4 +11us[ +79us] +/- 95us
6 关闭交换分区
【所有主节点都执行】
[root@k8s-master1 ~]# swapoff -a
[root@k8s-master1 ~]# vim /etc/fstab
删除一行:
检查是否关闭成功
[root@k8s-master1 ~]# free -m
total used free shared buff/cache available
Mem: 2827 157 2288 9 380 2514
Swap: 0 0 0
更多推荐
已为社区贡献1条内容
所有评论(0)