目录

一、环境准备

二、系统初始化

三、所有节点安装docker、kubeadm、kubelet

 四、部署Kubernetes Master

 Kubectl工具

 五、加入Kubernetes Node

 六、部署CNI网络插件

 七、测试kubernetes集群


一、环境准备

#最小化安装:yum一个wget 
yum install wget
虚拟机名字Ip地址配置状态
Master-CentOS 7192.168.81.129x86_x64 2+GB RAM 2+CPU 40+GB硬盘

1.网络互通

2.可访问外网,需要拉镜像

3.禁止swap分区
Node1-Centos7-02192.168.81.130x86_x64 2+GB RAM 2+CPU 40+GB硬盘
Node2-Centos7-03192.168.81.131x86_x64 2+GB RAM 2+CPU 40+GB硬盘

二、系统初始化

三天机器都执行下面命令,

  • 关闭防火墙
[root@localhost ~]# systemctl stop firewalld       #暂时关闭防火墙
[root@localhost ~]# systemctl disable firewalld    #永久关闭防火墙
  • 关闭selinux
[root@localhost ~]# sed -i 's/enforcing/disable/' /etc/selinux/config  #永久关闭强制访问控制
[root@localhost ~]# setenforce 0                                       #临时关闭强制访问控制
  • 关闭swap
[root@localhost ~]# swapoff –a                           #临时关闭交换分区
[root@localhost ~]# sed -ri 's/."swap."/#&/' /etc/fstab  #永久关闭交换分区
  • 根据规划设置主机名
用法:set-hostname <主机名>
[root@localhost ~]# hostnamectl set-hostname k8smaster

  • 在master中添加hosts

#注意:ip和节点名字做相应变化

[root@localhost ~]# cat >> /etc/hosts <<EOF
> 192.168.81.129 k8smaster
> 192.168.81.130 k8snode1
> 192.168.81.131 k8snode2
> EOF
  • 将桥接的ipv4流量传递到iptables的链
#注意:三台节点都弄,目的是网络流量互通
[root@localhost ~]# cat > /etc/sysctl.d/k8s.conf << EOF
> net.bridge.bridge-nf-call-ip6tables = 1
> net.bridge.bridge-nf-call-iptables = 1
> EOF
[root@localhost ~]# sysctl –system   #生效

  •  时间同步
#注意:三台机器都同步
[root@localhost ~]# yum install ntpdate –y   #安装ntpdate命令包
 


[root@localhost ~]# ntpdate time.windows.com   #同步时间

三、所有节点安装docker、kubeadm、kubelet

  • 安装docker

  • 添加阿里云yum软件源

# 注意三台机器都执行

[root@localhost ~]# cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
  •  安装kubadm,kunelet和kubectl

# 注意三台机器都执行
由于版本更新频繁,这里制定版本号部署:
[root@localhost ~]# yum install -y kubelet-1.18.0 kubectl-1.18.0 kubeadm-1.18.0
[root@localhost ~]# systemctl enable kubelet  #kubelet开机自启动

 

 四、部署Kubernetes Master

#注意:在192.168.81.129(Master)执行。kubeadm初始化
[root@localhost docker]# kubeadm init --apiserver-advertise-address=192.168.81.129 --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

 

[root@localhost docker]#Docker -images   #可以看到已经安装的实例

 

 Kubectl工具

	mkdir -p $HOME/.kube
	sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config

 五、加入Kubernetes Node

在node中执行,向集群中添加节点 执行在kubeadm init 输出的kubeadm join命令

#此处是如下所示,在node1里面执行:
kubeadm join 192.168.81.129:6443 --token v1xlpp.jgrwnfr4r5alsz39 \
--discovery-token-ca-cert-hash sha256:c2bc93ba562ffe03e293f672103a5e1be3245704806a480ff4862a6d95371edd


#默认token 有效时长24小时  当过期后,该token就不可用了,这时需要重新创建token,操作如下
Kubeadm token create –print-jion-command


 在node2中执行:

在master节点中查看节点:
kubectl get nodes

 六、部署CNI网络插件

[root@localhost docker]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

[root@localhost docker]# kubectl get pods -n kube-system  #列出名字为kube-system运行的Pod信息

 

 七、测试kubernetes集群



应用 YAML 文件
[root@localhost docker]# kubectl apply -f nginx-deployment.yaml

查看部署结果
# 查看 Deployment
[root@localhost docker]#kubectl get deployments

# 查看 Pod
[root@localhost docker]#kubectl get pods

# 成功运行   nginx 拉取的时候会很慢,也会报拉取次数超过限制次数等错误,可以更换其他的国内源,等完全拉取完后就正常Running了。

#将nginx端口暴露出来,然后在游览器端测试《nodeIP+port》
[root@k8smaster docker]# kubectl expose deployment nginx-deployment --port=80 --type=NodePort #端口暴露

[root@k8smaster docker]# kubectl get svc  #查看nginx-deployment容器暴露的端口号

 

游览器任意一个node 的ip+30489(端口)

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐