kubernetes,简称K8s,是用8 代替8 个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes 提供了应用部署,规划,更新,维护的一种机制。
Kubernetes 积累了作为Google 生产环境运行工作负载15 年的经验,并吸收了来自于社区的最佳想法和实践。
K8S架构主要包含两部分:Master(主控节点)和 node(工作节点)
K8S集群控制节点,对集群进行调度管理,接受集群外用户去集群操作请求;
master:主控节点
Work node:工作节点
Kubelet:master派到node节点代表,管理本机容器
kube-proxy:提供网络代理,负载均衡等操作
容器运行环境【Container Runtime】
fluentd:是一个守护进程,它有助于提升 集群层面日志
label:标签,用于对象资源查询,筛选
命名空间,逻辑隔离
我们通过Kubernetes的API来操作整个集群
同时我们可以通过 kubectl 、ui、curl 最终发送 http + json/yaml 方式的请求给API Server,然后控制整个K8S集群,K8S中所有的资源对象都可以采用 yaml 或 json 格式的文件定义或描述
如下:使用yaml部署一个nginx的pod
关闭防火墙:
systemctl stop firewalld #临时
systemctl disable firewalld # 永久
关闭 selinux
sed -i 's/SELINUX=enforcing/\SELINUX=disabled/' /etc/selinux/config # 永久【重启生效】
setenforce 0 # 临时
关闭 swap:
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久【重启生效】
在== master ==添加 hosts:
cat >> /etc/hosts << EOF
192.168.60.151 k8smaster
192.168.60.152 k8snode1
192.168.60.153 k8snode2
EOF
将桥接的 IPv4 流量传递到 iptables 的链:
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOFsysctl --system # 生效
时间同步:
yum install ntpdate -y
ntpdate time.windows.com
所有节点安装
Kubernetes 默认 CRI(容器运行时)为 Docker,因此先安装 Docker
#阿里云的yum源
cat >/etc/yum.repos.d/docker.repo<
docker 添加阿里云 YUM 软件源
cat >> /etc/docker/daemon.json << EOF
{"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF
所有节点安装
添加 yum
# 配置 k8s 的 yum 源【阿里云】
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF# 安装 kubelet、kubeadm、kubectl,同时指定版本
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
# 设置开机自启【这里暂时先不启动 kubelet】
systemctl enable kubelet
Master上执行
kubeadm init --apiserver-advertise-address=192.168.3.34 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
由于默认拉取镜像地址 k8s.gcr.io 国内无法访问,这里指定阿里云镜像仓库地址。
安装成功会提示kubeadm 指令(每个人不一样),先复制下来到Node结点执行
kubeadm join 192.168.3.34:6443 --token jt1gaq.tvjxyy6bdbr70r95 \--discovery-token-ca-cert-hash sha256:68e7c5f64b6e15efe25421a17af0057d013e1f40f55138cb637552449e378be9 #默认 token 有效期为 24 小时,当过期之后,该 token 就不可用了。这时就需要重新创建 token,操作如下:
Master上执行使用 kubectl 工具:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Master上执行查看Node结点是否加进来
kubectl get node
raw.githubusercontent.com的地址被污染先去ip查询查询ip
然后在hosts里添加185.199.108.xxx raw.githubusercontent.com
# 下载网络插件配置
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 添加
kubectl apply -f kube-flannel.yml
# 等一会!
# ......
# 查看状态 【kube-system 是 k8s 中的最小单元】
kubectl get pods -n kube-system
嫌麻烦也有我自己下载好久才成功的配置
配置文件
在 Kubernetes 集群中创建一个 pod,验证是否正常运行
kubectl create deployment nginx --image=nginx
如果我们出现 Running 状态的时候,表示已经成功运行了
需要将端口暴露出去,让其它外界能够访问
#暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort
# 查看一下对外的端口
kubectl get pod,svc
访问地址:http://NodeIP:Port
eg:http://192.168.3.34:32698/
上一篇:R语言使用plot函数可视化数据散点图,使用pch参数设置数据点类型、fg参数自定义设置可视化图像边框颜色
下一篇:网约车驾驶员资格证怎么考(网约车驾驶员资格证模拟考试) 网约车驾驶员资格证怎么考杭州 网约车驾驶员资格证都考哪些内容