【Kubernetes快速实战】

简介: 【Kubernetes快速实战】

前言

K8S 是Kubernetes的全称,用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统,K8S 是 负责自动化运维管理多个 Docker 程序的集群。


一、K8S核心特性

服务发现与负载均衡:无需修改你的应用程序即可使用陌生的服务发现机制。

存储编排:自动挂载所选存储系统,包括本地存储。

Secret和配置管理:部署更新Secrets和应用程序的配置时不必重新构建容器镜像,且不必将软件堆栈配置中的秘密信息暴露出来。

批量执行:除了服务之外,Kubernetes还可以管理你的批处理和CI工作负载,在期望时替换掉失效的容器。

水平扩缩:使用一个简单的命令、一个UI或基于CPU使用情况自动对应用程序进行扩缩。

自动化上线和回滚:Kubernetes会分步骤地将针对应用或其配置的更改上线,同时监视应用程序运行状况以确保你不会同时终止所有实例。

自动装箱:根据资源需求和其他约束自动放置容器,同时避免影响可用性。

自我修复:重新启动失败的容器,在节点死亡时替换并重新调度容器,杀死不响应用户定义的健康检查的容器。

二、K8S集群安装

1.安装K8S集群

搭建K8S集群,准备三台4核8G的虚拟机,操作系统选择用centos 7以上版本,先在三台机器上装好docker。

在三台机器上都执行如下命令操作:

1、关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

2、关闭 selinux

sed ‐i 's/enforcing/disabled/' /etc/selinux/config # 永久关闭
setenforce 0 # 临时关闭

3、关闭 swap

swapoff ‐a # 临时关闭
 vim /etc/fstab # 永久关闭
#注释掉swap这行
# /dev/mapper/centos‐swap swap swap defaults 0 0
systemctl reboot #重启生效
free ‐m #查看下swap交换区是否都为0,如果都为0则swap关闭成功

4、给三台机器分别设置主机名

hostnamectl set‐hostname <hostname>

第一台:k8s‐master

第二台:k8s‐node1

第三台:k8s‐node2

5、在 k8s‐master机器添加hosts,执行如下命令,ip需要修改成你自己机器的ip

cat >> /etc/hosts << EOF
192.168.160.129 k8s‐master
192.168.160.130 k8s‐node1
192.168.160.131 k8s‐node2
EOF

6、将桥接的IPv4流量传递到iptables

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge‐nf‐call‐ip6tables = 1
net.bridge.bridge‐nf‐call‐iptables = 1
EOF
sysctl ‐‐system # 生效

7、设置时间同步

yum install ntpdate ‐y
ntpdate time.windows.com

8、添加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

9、如果之前安装过k8s,先卸载旧版本

yum remove ‐y kubelet kubeadm kubectl

10、查看可以安装的版本

yum list kubelet ‐‐showduplicates | sort ‐r

11、安装kubelet、kubeadm、kubectl 指定版本,我们使用kubeadm方式安装k8s集群

yum install ‐y kubelet‐1.18.0 kubeadm‐1.18.0 kubectl‐1.18.0

12、开机启动kubelet

systemctl enable kubelet
systemctl start kubelet

13、初始化操作

在k8s-master机器上执行初始化操作(里面的第一个ip地址就是k8s-master机器的ip,改成你自己机器的,后面两个ip网段不用动)

kubeadm init ‐‐apiserver‐advertise‐address=192.168.65.160 ‐‐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-master机器上执行如下命令:

#配置使用 kubectl 命令工具(类似docker这个命令),执行上图第二个红框里的命令
mkdir ‐p $HOME/.kube
sudo cp ‐i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id ‐u):$(id ‐g) $HOME/.kube/config
#查看kubectl是否能正常使用
kubectl get nodes
#安装 Pod 网络插件
kubectl apply ‐f https://docs.projectcalico.org/manifests/calico.yaml
# 如果上面这个calico网络插件安装不成功可以试下下面这个
# kubectl apply ‐f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kubeflannel.yml

在所有k8s node机器执行上图第三个红框里的命令:

 # 将node节点加入进master节点的集群里,复制上图第三个红框里的命令执行
 kubeadm join 192.168.65.160:6443 ‐‐token hbovty.6x82bkdlsk6dfy32 \
 ‐‐discovery‐token‐ca‐cert‐hash sha256:659511b431f276b2a5f47397677b1dff74838ae5eb18e24135e6dae1b8c45840

在k8s-master机器执行查看节点命令

kubectl get nodes


刚刚安装的三个k8s节点都已经准备就绪,大功告成!

2.用K8S部署Nginx

在k8s-master机器上执行

# 创建一次deployment部署
kubectl create deployment nginx ‐‐image=nginx
kubectl expose deployment nginx ‐‐port=80 ‐‐type=NodePort
# 查看Nginx的pod和service信息
kubectl get pod,svc ‐o wide

访问Nginx地址: http://任意节点的ip:图中Nginx的对外映射端口,http://192.168.65.160:30433


补充:如果node节点添加进集群失败,可以删除节点重新添加。要删除 k8snode1这个节点,首先在 master 节点上依次执行以下两个命令:

kubectl drain k8s‐node1 ‐‐delete‐local‐data ‐‐force ‐‐ignore‐daemonsets
kubectl delete node k8s‐node1

执行后通过 kubectl get node 命令可以看到 k8snode1已被成功删除,接着在 k8snode1这个 Node 节点上执行如下命令,这样该节点即完全从 k8s 集群中脱离开来,之后就可以重新执行命令添加到集群。

kubeadm reset

三、总结

提示:以上就是今天要讲的内容,本文仅仅简单介绍了Kubernetes快速搭建,以及用K8S部署Nginx。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
7月前
|
Kubernetes 监控 安全
Kubernetes实战:集群管理与自动化技术详解
【6月更文挑战第27天】Kubernetes实战聚焦集群自动化管理,涵盖核心概念如主从架构、API Server及工作节点,强调自动扩缩容、RBAC安全控制与日志监控。通过IaC工具如Helm实现配置自动化,结合Prometheus等进行持续监控,强调安全策略与资源优化,展现K8s在现代应用管理中的威力。
|
2月前
|
Kubernetes 监控 安全
容器化技术:Docker与Kubernetes的实战应用
容器化技术:Docker与Kubernetes的实战应用
|
2月前
|
存储 Kubernetes Devops
Kubernetes集群管理和服务部署实战
Kubernetes集群管理和服务部署实战
61 0
|
4月前
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
678 3
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
4月前
|
Kubernetes 负载均衡 前端开发
二进制部署Kubernetes 1.23.15版本高可用集群实战
使用二进制文件部署Kubernetes 1.23.15版本高可用集群的详细教程,涵盖了从环境准备到网络插件部署的完整流程。
138 2
二进制部署Kubernetes 1.23.15版本高可用集群实战
|
3月前
|
Kubernetes 网络协议 Docker
Kubernetes入门到进阶实战
Kubernetes入门到进阶实战
113 0
|
4月前
|
Kubernetes Ubuntu 网络安全
Ubuntu基于kubeadm快速部署K8S实战
关于如何在Ubuntu系统上使用kubeadm工具快速部署Kubernetes集群的详细实战指南。
236 2
|
4月前
|
存储 Kubernetes Docker
深入探索容器化技术:Docker 实战与 Kubernetes 管理
深入探索容器化技术:Docker 实战与 Kubernetes 管理
97 0
|
4月前
|
Kubernetes Linux API
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
该博客文章详细介绍了在CentOS 7.6操作系统上使用kubeadm工具部署kubernetes 1.17.2版本的测试集群的过程,包括主机环境准备、安装Docker、配置kubelet、初始化集群、添加节点、部署网络插件以及配置k8s node节点管理api server服务器。
171 0
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
|
4月前
|
Kubernetes 容器
Kubernetes附加组件Dashboard部署实战篇
关于如何在Kubernetes集群中部署和配置Dashboard组件的详细实战指南,涵盖了从创建证书、部署Dashboard、设置服务访问到登录认证的完整流程。
541 0
Kubernetes附加组件Dashboard部署实战篇

热门文章

最新文章