做一个网站的市场价,北京app开发公司官网,展会网站模板,杭州seo排名一、硬件环境
准备3台Linux服务器#xff0c;此处用Vmware虚拟机。
主机名CPU内存k8smaster2核4Gk8snode12核4Gk8snode22核4G
二、系统前置准备
配置三台主机的hosts文件
cat EOF /etc/hosts
192.168.240.130 k8smaster
192.168.240.132 k8snode1
192.168.…一、硬件环境
准备3台Linux服务器此处用Vmware虚拟机。
主机名CPU内存k8smaster2核4Gk8snode12核4Gk8snode22核4G
二、系统前置准备
配置三台主机的hosts文件
cat EOF /etc/hosts
192.168.240.130 k8smaster
192.168.240.132 k8snode1
192.168.240.133 k8snode2
EOF设置主机名
hostnamectl set-hostname k8smaster
hostnamectl set-hostname k8snode1
hostnamectl set-hostname k8snode2关闭selinux、禁用swap分区
sed -i s/enforcing/disabled/ /etc/selinux/config
setenforce 0swapoff -a
sed -ri s/.*swap.*/#/ /etc/fstabipv4流量转发
cat /etc/sysctl.d/k8s.conf EOF
net.bridge.bridge-nf-call-ip6tables 1
net.bridge.bridge-nf-call-iptables 1
net.ipv4.ip_forward 1
EOF#让配置文件生效
modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf关闭防火墙
systemctl disable firewalld systemctl stop firewalld同步三台服务器的时间
yum install ntpdate -y
ntpdate time.windows.com三、环境安装
Docker 安装
Docker卸载
systemctl stop docker
yum remove -y docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerdDocker 安装
yum -y install gcc
yum -y install gcc-c
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum -y install docker-ce docker-ce-cli containerd.io
systemctl enable docker systemctl start docker
cat /etc/docker/daemon.json EOF
{
registry-mirrors: [https://b9pmyelo.mirror.aliyuncs.com]
}
EOF
systemctl restart dockerk8s安装
配置k8s安装镜像
cat EOF 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
mv kubernetes.repo /etc/yum.repos.d/安装kubeadm 、kubectl、kubelet
yum remove -y kubelet kubeadm kubectl yum install -y kubelet-1.16.2 kubectl-1.16.2 kubeadm-1.16.2 --disableexcludeskubernetes设置kubelet开机自启动
systemctl enable kubeletmaster节点配置
创建一个k8s的工作目录生成一个kubeadm配置文件
mkdir k8s-install cd k8s-install
kubeadm config print init-defaults kubeadm.yaml 修改配置文件
#修改生成好的配置文件镜像与版本
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
localAPIEndpoint:advertiseAddress: 192.169.240.130bindPort: 6443
nodeRegistration:criSocket: /var/run/dockershim.sockname: k8smastertaints:- 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
imageRepository: registry.aliyuncs.com/google_containers #修改镜像源
kind: ClusterConfiguration
kubernetesVersion: v1.16.2 #修改版本
networking:dnsDomain: cluster.localpodSubnet: 10.244.0.0/16 #pod网络serviceSubnet: 10.96.0.0/12
scheduler: {}下载kubeadm所需要的镜像
kubeadm config images pull --config kubeadm.yaml使用docker images 可查看下载的镜像信息
使用kubeadm 初始化master节点
kubeadm init --config kubeadm.yaml提示以下信息则表示初始化成功 Your 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.240.130:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:1877573f37b7fd0bc9d8e38cf8d68f17f51e64a55606f7b657f3cdba79469f16
按照提示创建目录
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config查看集群节点状态
kubectl get nodes 此时只有master节点是NotReady状态
将两台node节点 加入到master节点中去kubeadm join 是在master节点上初始化配置时生成的
kubeadm join 192.168.240.130:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:1877573f37b7fd0bc9d8e38cf8d68f17f51e64a55606f7b657f3cdba79469f16 再次查看master节点信息 安装flannel网络插件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml编辑kube-flannel.yml
改成虚拟机的网卡名称 下载flannel镜像
docker pull quay.io/coreos/flannel:v0.11.0-amd64
kubectl create -f kube-flannel.yml查看集群节点状态
kubectl get pods -Amaster节点的组件
api-server: api-server是主节点对外开发api的组件同时提供restful方式,也可以用kubectl方式。etcd 数据存储组件api-server会将收到的指令存储到etcd中。sched 负责接收指令然后选举合适的node节点通知节点进行容器的启停、负载均衡等。cm 主节点控制中心controller-manager。
node节点的组件
kubelet : 用于管理节点中的容器启停挂载等等。kube-proxy 用于节点间的网络通信、流量转发等。pod : pod是k8s中的最小调度单位一个pod中可以包含至少1个容器。多个容器组成了一个pod。