做php网站用mvc多吗,做医院网站公司,开网站做商城怎么样,wordpress添加自定义链接k8s应用部署方式演变
在部署应用程序的方式上#xff0c;主要经历了三个时代#xff1a;
传统部署#xff1a;互联网早期#xff0c;会直接将应用程序部署在物理机上
优点#xff1a;简单#xff0c;不需要其它技术的参与
缺点#xff1a;不能为应用程序定义资源使用…k8s应用部署方式演变
在部署应用程序的方式上主要经历了三个时代
传统部署互联网早期会直接将应用程序部署在物理机上
优点简单不需要其它技术的参与
缺点不能为应用程序定义资源使用边界很难合理地分配计算资源而且程序之间容易产生影响
虚拟化部署可以在一台物理机上运行多个虚拟机每个虚拟机都是独立的一个环境
优点程序环境不会相互产生影响提供了一定程度的安全性
缺点增加了操作系统浪费了部分资源
容器化部署与虚拟化类似但是共享了操作系统
优点
可以保证每个容器拥有自己的文件系统、CPU、内存、进程空间等
运行应用程序所需要的资源都被容器包装并和底层基础架构解耦
容器化的应用程序可以跨云服务商、跨Linux操作系统发行版进行部署 容器化部署方式给带来很多的便利但是也会出现一些问题比如说
一个容器故障停机了怎么样让另外一个容器立刻启动去替补停机的容器 当并发访问量变大的时候怎么样做到横向扩展容器数量 这些容器管理的问题统称为容器编排问题为了解决这些容器编排问题就产生了一些容器编排的软件
SwarmDocker自己的容器编排工具 MesosApache的一个资源统一管控的工具需要和Marathon结合使用 KubernetesGoogle开源的的容器编排工具 关于k8s的知识我就不赘述了这次主要实践k8s的安装部署
开始实验
实验环境
主机 IP 系统 角色 153 192.168.121.153 centos7 master
154 192.168.121.154 centos7 node
155 192.168.121.155 centos7 node
系统一定要2核或者以上最少要求2核内存2G或以上
首先在
三台机子都安装docker
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
cat /etc/docker/daemon.json EOF
{registry-mirrors:[https://hub-mirror.c.163.com/]}
EOF
systemctl start docker
systemctl enable docker.service校正时间同步
timedatectl set-timezone Asia/Shanghai
yum install -y ntpdate、
ntpdate ntp.aliyun.com
timedatectl set-local-rtc 0配置计划任务自动校正时间可选实验环境而已不做也没什么影响
# crontab -e ---配置计划任务
01 */2 * * * ntpdata npt.aliyun.com# systemctl restart crond.service配置A记录互相解析
cat /etc/hosts EOF
192.168.121.153 server153
192.168.121.154 server154
192.168.121.155 server155
EOF关闭防火墙
iptables -F
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i /SELINUX/c\SELINUXdisabled/ /etc/selinux/config关闭swap分区否则会影响k8s的性能
swapoff -a
sed -i /swap/s/.*/#/ /etc/fstab设置内核及相关网络参数
modprobe br_netfilter
modprobe overlay
modprobe ip_vs
cat EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
ip_vs
EOFcat EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables 1
net.bridge.bridge-nf-call-ip6tables 1
net.ipv4.ip_forward 1
net.ipv4.tcp_tw_recycle0
vm.swappiness0
vm.overcommit_memory1
vm.panic_on_oom0
fs.inotify.max_user_instances8192
fs.inotify.max_user_watches1048576
fs.file-max52706963
fs.nr_open52706963
net.ipv6.conf.all.disable_ipv61
net.netfilter.nf_conntrack_max2310720
EOF
sysctl -p /etc/sysctl.d/k8s.conf然后制作k8s的阿里源
cat EOF /etc/yum.repos.d/kubernetes.repo
[kubernetes]
nameKubernetes
baseurlhttps://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled1
gpgcheck0
repo_gpgcheck0
gpgkeyhttps://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum clean all
yum makecache fast然后获取cri-docker安装包
wget https://github.com/Mirantis/cri-dockerd安装git和go语言编译环境
yum install -y go git然后解压cri-docker并编译
tar -xf cri-dockerd.tar.gz
cd cri-dockerd/
make cri-dockerd将 应用程序拷贝到PATH 环境下
install -o root -g root -m 0755 cri-dockerd /usr/bin/cri-dockerd安装 cri-dockerd 服务 systemd service控制文件
install packaging/systemd/* /usr/lib/systemd/system/配置systemd service文件
cat /usr/lib/systemd/system/cri-docker.service EOF
[Unit]
DescriptionCRI Interface for Docker Application Container Engine
Documentationhttps://docs.mirantis.com
Afternetwork-online.target firewalld.service docker.service
Wantsnetwork-online.target
Requirescri-docker.socket
[Service]
Typenotify
ExecStart/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugincni --cni-bin-dir/opt/cni/bin --cni-cache-dir/var/lib/cni/cache --cni-conf-dir/etc/cni/net.d --pod-infra-container-imageregistry.aliyuncs.com/google_containers/pause:3.9
ExecReload/bin/kill -s HUP
TimeoutSec0
RestartSec2
Restartalways
StartLimitBurst3
StartLimitInterval60s
LimitNOFILEinfinity
LimitNPROCinfinity
LimitCOREinfinity
TasksMaxinfinity
Delegateyes
KillModeprocess
[Install]
WantedBymulti-user.target
EOF配置cri-docker.sockrt
cat /usr/lib/systemd/system/cri-docker.socket EOF
[Unit]
DescriptionCRI Docker Socket for the API
PartOfcri-docker.service[Socket]
ListenStream%t/cri-dockerd.sock
SocketMode0660
SocketUserroot
SocketGrouproot[Install]
WantedBysockets.target
EOF加载配置文件启动cri-docker
systemctl daemon-reload
systemctl start cri-docker.service
systemctl enable cri-docker.service查看套接字文件是否启动
ls /var/run/cri-dockerd.sock然后安装kubelet和kubeadm用来连接API
yum install kubelet-1.26.3 kubeadm-1.26.3 -y三个节点都做相同的配置到这里就可以了
主节点的配置
然后到master节点的配置
下载kubectl
yum install kubectl-1.26.3查看初始集群所需要的镜像
[rootserver153 cri-dockerd]# kubeadm config images list
I1107 20:01:31.050004 7050 version.go:256] remote version is much newer: v1.28.3; falling back to: stable-1.26
registry.k8s.io/kube-apiserver:v1.26.10
registry.k8s.io/kube-controller-manager:v1.26.10
registry.k8s.io/kube-scheduler:v1.26.10
registry.k8s.io/kube-proxy:v1.26.10
registry.k8s.io/pause:3.9
registry.k8s.io/etcd:3.5.6-0
registry.k8s.io/coredns/coredns:v1.9.3查看镜像是因为官方站点在国外有时候网络不好不一定能下所以可以切换阿里源镜像或者准备好镜像在自己的镜像仓库
然后开始初始化集群
[rootserver153 cri-dockerd]# kubeadm init --apiserver-advertise-address192.168.121.153 --kubernetes-versionv1.26.3 --image-repository registry.aliyuncs.com/google_containers --cri-socket unix:///var/run/cri-dockerd.sock --service-cidr10.1.0.0/16 --pod-network-cidr10.2.0.0/16 --token-ttl0初始化好后结尾会如下提示
To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG/etc/kubernetes/admin.conf
然后执行下面两段代码 mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG/etc/kubernetes/admin.conf还有这段token也记得复制
Then you can join any number of worker nodes by running the following on each as root:kubeadm join 192.168.121.153:6443 --token 3n3vlb.vpgsgfh6vf77tup0 \--discovery-token-ca-cert-hash sha256:c383079099cf763acc2631705cb7361d06e2156dd496ba35b348bfa03e230c36 这段是node节点加入到集群的口令
做好上面这些之后最好重新连接一下会话刷新配置
然后去node节点加入到集群 用刚才我们复制的口令加入集群 只需要执行下面这段命令就可以了
[rootserver154 cri-dockerd]# kubeadm join 192.168.121.153:6443 --token 3n3vlb.vpgsgfh6vf77tup0 --discovery-token-ca-cert-hash sha256:c383079099cf763acc2631705cb7361d06e2156dd496ba35b348bfa03e230c36 --cri-socket unix:///var/run/cri-dockerd.sock加入成功后会有下面字段的提示
This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.Run kubectl get nodes on the control-plane to see this node join the cluster.然后我们就去master节点执行kubectl get nodes查看集群
[rootserver153 cri-dockerd]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
server153 NotReady control-plane 8m20s v1.26.3
server154 NotReady none 2m2s v1.26.3
server155 NotReady none 98s v1.26.3可以看到集群加入成功
但是还有一个问题那就是网络还没配置所以状态才会显示NotReady
我们下载flannel这里注意一个问题
因为是从github下载的国内网络你们懂的不一定能拉下载只能多试几下或者网络好点再下
[rootserver153 cri-dockerd]# cd /etc/kubernetes/manifests
[rootserver153 manifests]# wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml查看我们所需的镜像等下也是要拉镜像的
[rootserver153 manifests]# grep image: kube-flannel.ymlimage: docker.io/flannel/flannel:v0.23.0image: docker.io/flannel/flannel-cni-plugin:v1.2.0image: docker.io/flannel/flannel:v0.23.0然后修改配置文件改两个地方
[rootserver153 manifests]# vim kube-flannel.yml修改好以后就可以部署组件了
[rootserver153 manifests]# kubectl apply -f kube-flannel.yml然后再查看集群状态
这个等待过程可能是比较久的因为去国外站点拉镜像是有很慢的看网络情况的
[rootserver153 manifests]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
server153 NotReady control-plane 39m v1.26.3
server154 NotReady none 33m v1.26.3
server155 NotReady none 33m v1.26.3
[rootserver153 manifests]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
server153 Ready control-plane 42m v1.26.3
server154 Ready none 36m v1.26.3
server155 Ready none 35m v1.26.3然后这样我们的k8s集群就部署好了当然这个是单master节点的不是高可用集群的
希望对大家有帮助。