phpcms可以做网站吗,visual studio怎么做网页,网站可以做推广,设计开发程序目录 一、环境准备
1、主机初始化配置
2、配置主机名绑定hosts#xff0c;不同主机名称不同
3、主机配置初始化
4、部署docker环境
二、部署kubernetes集群
1、组件介绍
2、所有主机配置阿里云yum源
3、安装kubelet 、kubeadm 、kubectl
4、配置init-config.yaml
5、…目录 一、环境准备
1、主机初始化配置
2、配置主机名绑定hosts不同主机名称不同
3、主机配置初始化
4、部署docker环境
二、部署kubernetes集群
1、组件介绍
2、所有主机配置阿里云yum源
3、安装kubelet 、kubeadm 、kubectl
4、配置init-config.yaml
5、安装master节点
6、安装node节点 一、环境准备
1、主机初始化配置
所有主机配置禁用防火墙和selinux
[rootlocalhost ~]# setenforce 0
[rootlocalhost ~]# iptables -F
[rootlocalhost ~]# systemctl stop firewalld
[rootlocalhost ~]# systemctl disable firewalld
[rootlocalhost ~]# systemctl stop NetworkManager
[rootlocalhost ~]# systemctl disable NetworkManager
[rootlocalhost ~]# sed -i /^SELINUX/s/enforcing/disabled/ /etc/selinux/config2、配置主机名绑定hosts不同主机名称不同
[rootmaster ~]# hostname k8s-master
[rootmaster ~]# bash
[rootk8s-master ~]#
[rootnode01 ~]# hostname k8s-node01
[rootnode01 ~]# bash
[rootk8s-node01 ~]#
[rootnode02 ~]# hostname k8s-node02
[rootnode02 ~]# bash
[rootk8s-node02 ~]#
[rootk8s-master ~]# cat EOF /etc/hosts192.168.147.138 k8s-master192.168.147.139 k8s-node01192.168.147.140 k8s-node02EOF
[rootk8s-master ~]# scp /etc/hosts 192.168.147.139:/etc/hosts
root192.168.147.139s password:
hosts 100% 239 406.5KB/s 00:00
[rootk8s-master ~]# scp /etc/hosts 192.168.147.140:/etc/hosts
root192.168.147.140s password:
hosts
3、主机配置初始化
[rootk8s-master ~]# yum -y install vim wget net-tools lrzsz
[rootk8s-master ~]# swapoff -a
[rootk8s-master ~]# sed -i /swap/s/^/#/ /etc/fstab[rootk8s-node01 ~]# cat EOF /etc/sysctl.confnet.bridge.bridge-nf-call-ip6tables 1net.bridge.bridge-nf-call-iptables 1EOF
[rootk8s-node01 ~]# modprobe br_netfilter
[rootk8s-node01 ~]# sysctl -p
net.bridge.bridge-nf-call-ip6tables 1
net.bridge.bridge-nf-call-iptables 14、部署docker环境
三台主机上分别部署 Docker 环境因为 Kubernetes 对容器的编排需要 Docker 的支持
[rootk8s-master ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[rootk8s-master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2使用 YUM 方式安装 Docker 时推荐使用阿里的 YUM 源。阿里的官方开源站点地址是https://developer.aliyun.com/mirror/可以在站点内找到 Docker 的源地址。
[rootk8s-master ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo[rootk8s-master ~]# yum clean all yum makecache fast [rootk8s-master ~]# yum -y install docker-ce
[rootk8s-master ~]# systemctl start docker
[rootk8s-master ~]# systemctl enable docker镜像加速器所有主机配置
很多镜像都是在国外的服务器上由于网络上存在的问题经常导致无法拉取镜像的错误所以最好将镜像拉取地址设置成国内的。目前国内很多公有云服务商都提供了镜像加速服务。镜像加速配置如下所示。
https://dockerhub.azk8s.cn //Azure 中国镜像
https://hub-mirror.c.163.com //网易云加速器[rootk8s-master ~]# cat END /etc/docker/daemon.json
{registry-mirrors:[ https://nyakyfun.mirror.aliyuncs.com ]
}
END
[rootk8s-master ~]# systemctl daemon-reload
[rootk8s-master ~]# systemctl restart docker将镜像加速地址直接写入/etc/docker/daemon.json 文件内如果文件不存在可直接新建文件并保存。通过该文件扩展名可以看出daemon.json 的内容必须符合 json 格式书写时要注意。同时由于单一镜像服务存在不可用的情况在配置加速时推荐配置两个或多个加速地址从而达到冗余、高可用的目的。
二、部署kubernetes集群
1、组件介绍
三个节点都需要安装下面三个组件
kubeadm安装工具使所有的组件都会以容器的方式运行kubectl客户端连接K8S API工具kubelet运行在node节点用来启动容器的工具
2、所有主机配置阿里云yum源
[rootk8s-master ~]# cat EOF /etc/yum.repos.d/kubernetes.repo[kubernetes]nameKubernetesbaseurlhttps://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/enabled1gpgcheck0repo_gpgcheck0gpgkeyhttps://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttps://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF
[rootk8s-master ~]# ls /etc/yum.repos.d/
backup CentOS-Base.repo CentOS-Media.repo docker-ce.repo kubernetes.repo3、安装kubelet 、kubeadm 、kubectl
所有主机配置
[rootk8s-master ~]# yum -y install kubelet-1.19.0 kubeadm-1.19.0 kubectl-1.19.0已安装:kubeadm.x86_64 0:1.19.0-0 kubectl.x86_64 0:1.19.0-0 kubelet.x86_64 0:1.19.0-0 作为依赖被安装:conntrack-tools.x86_64 0:1.4.4-7.el7 cri-tools.x86_64 0:1.26.0-0 kubernetes-cni.x86_64 0:1.2.0-0 libnetfilter_cthelper.x86_64 0:1.0.0-11.el7 libnetfilter_cttimeout.x86_64 0:1.0.0-7.el7 libnetfilter_queue.x86_64 0:1.0.2-2.el7_2 [rootk8s-master ~]# systemctl enable kubelet
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.kubelet 刚安装完成后通过 systemctl start kubelet 方式是无法启动的需要加入节点或初始化为 master 后才可启动成功。
如果在命令执行过程中出现索引 gpg 检查失败的情况, 请使用 yum install -y --nogpgcheck kubelet kubeadm kubectl 来安装。
4、配置init-config.yaml
Kubeadm 提供了很多配置项Kubeadm 配置在 Kubernetes 集群中是存储在ConfigMap 中的也可将这些配置写入配置文件方便管理复杂的配置项。Kubeadm 配内容是通过 kubeadm config 命令写入配置文件的。 在master节点安装master 定于为192.168.147.138通过如下指令创建默认的init-config.yaml文件
[rootk8s-master ~]# kubeadm config print init-defaults init-config.yaml
其中kubeadm config 除了用于输出配置项到文件中还提供了其他一些常用功能如下所示。
kubeadm config view查看当前集群中的配置值。kubeadm config print join-defaults输出 kubeadm join 默认参数文件的内容。kubeadm config images list列出所需的镜像列表。kubeadm config images pull拉取镜像到本地。kubeadm config upload from-flags由配置参数生成 ConfigMap。 init-config.yaml配置
[rootk8s-master ~]# cat init-config.yaml
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
localAPIEndpoint:advertiseAddress: 192.168.147.138 //master节点IP地址bindPort: 6443
nodeRegistration:criSocket: /var/run/dockershim.sockname: k8s-master //如果使用域名保证可以解析或直接使用 IP 地址taints:- effect: NoSchedulekey: node-role.kubernetes.io/master
---
apiServer:timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:type: CoreDNS
etcd:local:dataDir: /var/lib/etcd //etcd 容器挂载到本地的目录
imageRepository: registry.aliyuncs.com/google_containers //修改为国内地址
kind: ClusterConfiguration
kubernetesVersion: v1.19.0
networking:dnsDomain: cluster.localserviceSubnet: 10.96.0.0/12podSubnet: 10.244.0.0/16 //新增加 Pod 网段
scheduler: {}5、安装master节点
拉取所需镜像
[rootk8s-master ~]# kubeadm config images list --config init-config.yaml
W0810 14:19:03.178380 4076 configset.go:348] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
registry.aliyuncs.com/google_containers/kube-apiserver:v1.19.0
registry.aliyuncs.com/google_containers/kube-controller-manager:v1.19.0
registry.aliyuncs.com/google_containers/kube-scheduler:v1.19.0
registry.aliyuncs.com/google_containers/kube-proxy:v1.19.0
registry.aliyuncs.com/google_containers/pause:3.2
registry.aliyuncs.com/google_containers/etcd:3.4.9-1
registry.aliyuncs.com/google_containers/coredns:1.7.0[rootk8s-master ~]# kubeadm config images pull --configinit-config.yaml
W0810 14:19:15.651641 4098 configset.go:348] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-apiserver:v1.19.0
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-controller-manager:v1.19.0
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-scheduler:v1.19.0
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-proxy:v1.19.0
[config/images] Pulled registry.aliyuncs.com/google_containers/pause:3.2
[config/images] Pulled registry.aliyuncs.com/google_containers/etcd:3.4.9-1
[config/images] Pulled registry.aliyuncs.com/google_containers/coredns:1.7.0安装master节点
[rootk8s-master ~]# echo 1 /proc/sys/net/ipv4/ip_forward
[rootk8s-master ~]# kubeadm init --configinit-config.yaml #初始化安装k8sYour Kubernetes control-plane has initialized successfully!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/configYou should now deploy a pod network to the cluster.
Run kubectl apply -f [podnetwork].yaml with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/Then you can join any number of worker nodes by running the following on each as root:kubeadm join 192.168.147.138:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:1251863b4438afd3ff188fc9c2c17a39e3cdc352e6f52e11435c95887e82dd6c 根据提示操作
kubectl 默认会在执行的用户家目录下面的.kube 目录下寻找config 文件。这里是将在初始化时[kubeconfig]步骤生成的admin.conf 拷贝到.kube/config
[rootk8s-master ~]# mkdir -p $HOME/.kube
[rootk8s-master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[rootk8s-master ~]# chown $(id -u):$(id -g) $HOME/.kube/configkubeadm init 主要执行了以下操作
[init]指定版本进行初始化操作
[preflight] 初始化前的检查和下载所需要的Docker镜像文件
[kubelet-start] 生成kubelet 的配置文件”/var/lib/kubelet/config.yaml”没有这个文件kubelet无法启动所以初始化之前的kubelet 实际上启动失败。
[certificates]生成Kubernetes 使用的证书存放在/etc/kubernetes/pki 目录中。
[kubeconfig] 生成 Kubeconfig 文件存放在/etc/kubernetes 目录中组件之间通信需要使用对应文件。
[control-plane]使用/etc/kubernetes/manifest 目录下的YAML 文件安装 Master 组件。
[etcd]使用/etc/kubernetes/manifest/etcd.yaml 安装Etcd 服务。
[wait-control-plane]等待control-plan 部署的Master 组件启动。
[apiclient]检查Master组件服务状态。
[uploadconfig]更新配置
[kubelet]使用configMap 配置kubelet。
[patchnode]更新CNI信息到Node 上通过注释的方式记录。
[mark-control-plane]为当前节点打标签打了角色Master和不可调度标签这样默认就不会使用Master 节点来运行Pod。
[bootstrap-token]生成token 记录下来后边使用kubeadm join 往集群中添加节点时会用到
[addons]安装附加组件CoreDNS 和kube-proxy Kubeadm 通过初始化安装是不包括网络插件的也就是说初始化之后是不具备相关网络功能的比如 k8s-master 节点上查看节点信息都是“Not Ready”状态、Pod 的 CoreDNS无法提供服务等。
6、安装node节点
根据master安装时的提示信息
[rootk8s-node01 ~]# kubeadm join 192.168.147.138:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:1251863b4438afd3ff188fc9c2c17a39e3cdc352e6f52e11435c95887e82dd6c
[rootk8s-node02 ~]# kubeadm join 192.168.147.138:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:1251863b4438afd3ff188fc9c2c17a39e3cdc352e6f52e11435c95887e82dd6c [rootk8s-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master NotReady master 2m10s v1.19.0
k8s-node01 NotReady none 29s v1.19.0
k8s-node02 NotReady none 25s v1.19.0
前面已经提到在初始化 k8s-master 时并没有网络相关配置所以无法跟 node 节点通信因此状态都是“NotReady”。但是通过 kubeadm join 加入的 node 节点已经在k8s-master 上可以看到。