k8s集群部署01
- Kubernetes简介
- Kubernetes部署
- 节点部署
- 关于yum缓存提示满了,Rhel7换源解决
- 报错
- 解决
- 过程
- 配置文件内容—要自己看链接是否过期
- 集群初始化
- Kubernetes-kubectl命令出现错误【The connection to the server localhost:8080 was refused - did you specify the right host or port?
Kubernetes简介
- 官方去掉了master和slaves
- k8s是一个管理工具,但越来越发展像一个操作系统
- 网红直播——阿里云平台,有重要数据如医药行业,组建控制中心。
- 底层架构可以是物理机、虚拟机或者是云
Kubernetes部署
节点部署
- server3:空白,server1和2:已装好docker
- server1和2干掉不用的网络
- 卷、网络和容器都各有参数
- 把不用的删除
- 删除容器
- 再次删除不用的卷
- 在sever3安装docker
- 阿里云、腾讯云的docker版本其实很低,1.20都算很高了,最新的1.24
- 三台机器docker版本最好保持一致
- 将server2的yum源拷贝到3过去
- 用的是centos社区版
- e17比较低,18、19、20可以
- k8s在1.24之前,每个节点上有Kubelet控制整个节点生命周期,通过gRPC的协议连接dockershim(这就是Kubelet内嵌的一个docker垫片),Docker一出世开辟了级联,也是武林盟主地位的,后面发展不好(一手好牌打的稀烂),而对于k8s而言这些都是多余的,两行命令行即可完成,只需要containerd就行,docker引擎一直挡在前面,通过其再调用别的。低级调用链。
- 启动docker
- 拷贝配置文件到server3
- 看官网开始配置
- 三台机器都:关闭防火墙,禁掉swap交换分区,并防止开机自启
- 网络、并允许iptables检查桥接流量
- k8s和docker的默认驱动不一样,docker为cgroups,而k8s需要systemd
cat <<EOF | sudo tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
- 把配置文件拷贝到server2、3
- 在每个节点重启一下,并确认
- 安装kubeadm、kubelet和kubectl
- 初始化集群:kubeadm
- 在集群的每个节点上用来启动Pod和容器等:kubele
- 用来与集群通信的命令行工具:kubectl
- 登陆阿里云链接
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
- 不需要最新版,1.24及以上默认不支持docker(该种情况下只能配runtime)
- 生态环境需要稳定
- 安装1.23.6版本的三个包
- 启动kubelet,并设置开机自启
- 每个节点都一样
关于yum缓存提示满了,Rhel7换源解决
报错
解决
- 解决:提示yum源缓存满了无法下载,我就先备份旧的,然后下载了一个新阿里云的源,清理旧缓存数据,缓存新数据,最后yum makecache
过程
- 完成
配置文件内容—要自己看链接是否过期
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-7 - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/os/$basearch/
http://mirrors.aliyuncs.com/centos/7/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/7/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-7 - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/updates/$basearch/
http://mirrors.aliyuncs.com/centos/7/updates/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/7/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-7 - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/extras/$basearch/
http://mirrors.aliyuncs.com/centos/7/extras/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/7/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-7 - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/centosplus/$basearch/
http://mirrors.aliyuncs.com/centos/7/centosplus/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/7/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#contrib - packages by Centos Users
[contrib]
name=CentOS-7 - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/contrib/$basearch/
http://mirrors.aliyuncs.com/centos/7/contrib/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/7/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
集群初始化
- 查看集群默认配置信息
- k8s的两种默认配置方式
- 第一种是把k8s生成默认配置文件,把需要的东西做适当的修改一推就行,第二种是通过命令行的方式,但两种方式不能兼容。
- 默认镜像仓库的位置,所以默认情况肯定拉取不了
- 通过参数指定镜像仓库,指向阿里云镜像站
- 当前最新匹配的是1.26.0,现在用的是1.23.0
- 指定k8s安装版本
- 下载的k8s集群的镜像版本决定了真正k8s镜像版本
- 提前拉取镜像,以免初始化拉取的时候等待
- 下载完成,开始初始化
- 并给容器Pod(最小的原子单位,和docker不一样)指定网络IP段,因为我们使用的是第三方Flannel组件
- 报错后修改虚拟机配置
- 拉取镜像过程会非常快
- 表示想在普通用户上操作:
在普通用户下创建一个目录,把etc下面的证书拷贝过来,通过这个证书用管理员的身份去连接,拷贝到部署目录中,继而去组建 - 超级用户直接复制一个变量就行
- Pod还没有运行起来,组建没有就绪
- 1.24的时候master就没有了
- 链接: link
- k8s v.1.17版本上运行
- 链接: link
- 内含两个镜像
- 通过kubectl做一些修改和运行
- 若有警告不需要管,是让1.25之后找到替换掉
- 清单里面定义的是对资源的期望状态
- 每个节点都会部署kube-flannel-ds-bkl4v
- 补齐功能
- 下载镜像之后运行
- 全部为running状态
- 节点为ready状态
- 这时完成了主控节点部署
- 寻找master的join信息,join的token默认有效期24小时
- 如果超过24小时需要扩容其他节点,需要再kubeadm token create创建token,然后替换该命令里的token就行
- 使用参数自动打印
- 若过期敲回车运行
- kubeadm token create --print-join-command
- 这里都增大server2和3的内存以免后面报错
- 关闭SELinux
- 关闭防火墙
- 记得设置开机自启服务
systemctl enable --now kubelet.service
systemctl disable firewalld --now
getenforce
sysctl -w net.ipv4.ip_forward=1
#重新生成token
kubeadm token create --print-join-command
systemctl status kubelet
- 发现服务已经起来了
- 将server2和3部署好
Kubernetes-kubectl命令出现错误【The connection to the server localhost:8080 was refused - did you specify the right host or port?
- 解决:
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile
- 节点flannel还未加载完,代理没有跑完
- 查看节点情况
kubectl get pod -A
kubectl get pod -A -o wide
- 查看镜像部署下载情况
- 一个三个节点的k8s就部署好了
- 来跑一个镜像,master不会参与调度,会分配给2和3
- running才是下载好的镜像,才能运行
- 查看镜像
kubectl get pod -A
kubectl get pod -A -o wide
kubectl describe pod demo
- 是一个集群,只要在一个节点上操作就行