- 一、前言
- 二、安装Docker、kubectl、kubeadm
- 三、配置K8S集群前的准备
- 四、使用
kubeadm
初始化Kubenets集群 - 五、安装pod网络(CNI网络插件)
- (1)在线下载的形式配置,下载网络插件配置(Kubernetes v1.7+ 以上)
- (2)如果上述方法遇到如下如问题
- 查看状态 【kube-system是k8s中的最小单元】
- 先安装一下Ngnix依赖的一个包,不安装Ngnix会报错起不来
- 创建一个pod跑个ngnix
- 暴露端口
- 查看一下对外的端口
一、前言
K8s官方安装操作文档: http://docs.kubernetes.org.cn/457.html
二、安装Docker、kubectl、kubeadm
全部的机器都要安装 Docker,kubectl,和kubeadm
(1)Docker安装:前面已经说详细说明过了,这里不再赘述,传送门:Kubernets DevOps环境搭建(一):Docker环境搭建
(2)kubectl、kubelet、kubeadm安装:
官网安装说明:安装和设置kubectl
官网是直接使用wget命令下载安装的,我建议直接使用 yum
安装
https://storage.googleapis.com/kubernetes-release/release/stable.txt
# 在/etc/yum.repos.d/目录下添加Kubernetes的yum源
$ cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
# 查看可以安装的软件列表,这时候应该就能看到 kubectl 的安装包了
$ yum list kubectl –showduplicates
# 安装kubectl,不带版本号默认是最新版,如果安装指定版本号:yum install kubectl-1.20.2-0
$ yum install kubectl.x86_64
# 安装成功,查看kubectl版本信息,输出版本号则成功
$ kubectl version --client
# 同样方法,安装 kubelet
$ yum install kubelet.x86_64
# 启用kubelet服务
$ systemctl enable kubelet && systemctl start kubelet
# 同样方法,安装 kubeadm
$ yum install kubeadm.x86_64
三、配置K8S集群前的准备
# 关闭防火墙
$ systemctl stop firewalld
$ systemctl disable firewalld
# 临时关闭selinux【永久关闭:sed -i 's/enforcing/disabled/' /etc/selinux/config 】
$ setenforce 0
# 临时关闭swap [永久关闭:sed -ri 's/.*swap.*/#&/' /etc/fstab ]
$ swapoff -a
# 各个节点设置主机名【建议设置一下主机名】
$ hostnamectl set-hostname master-107
# 在master的机器上面配置各个节点的host
$ cat >> /etc/hosts << EOF
192.168.56.107 master-107
192.168.56.108 node-108
192.168.56.109 node-109
EOF
# 将桥接的IPv4流量传递到iptables的链
$ cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# 生效
$ sysctl --system
# 最好让各个节点的时间同步
$ yum install ntpdate -y
$ ntpdate time.windows.com
四、使用kubeadm
初始化Kubenets集群
在master
节点上运行以下命令, 一定要先关闭防火墙,apiserver-advertise-address 这个改成自己的master主键IP地址, kubetnets的版本也改成自己安装的版本
$ kubeadm init \
--apiserver-advertise-address=192.168.56.107 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
执行完毕以后,后很完整的操作提示,直接按照操作提示执行即可,以下是我操作的提示信息
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/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You 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.56.107:6443 --token f2fd2i.tpwkqlmri2h1zk11 \
--discovery-token-ca-cert-hash sha256:5198d38dc1d2de0a6c33853c0fef405e68bd88c7e73311a6671c1ac0fb448459
所以要执行的命令是
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
$ export KUBECONFIG=/etc/kubernetes/admin.conf
(2) 各子节点加入集群
# 注意,以下的命令是在master初始化完成后,每个人的都不一样!!!需要复制自己生成的
$ kubeadm join 192.168.56.107:6443 --token f2fd2i.tpwkqlmri2h1zk11 \
--discovery-token-ca-cert-hash sha256:5198d38dc1d2de0a6c33853c0fef405e68bd88c7e73311a6671c1ac0fb448459
# 安装显示的token默认token有效期为24小时,如果过期了,需要在master上执行以下命令重新生成token
$ kubeadm token create --print-join-command
执行以后加入成功会有以下的提示
在master节点上运行 kubectl get nodes
会发现节点已经加入了,但是节点的状态是 NotReady
,因为
五、安装pod网络(CNI网络插件)
Pod
的网络插件有很多,不过使用kubeadm
部署的只支持CNI
网络插件
flanel官方文档:https://github.com/coreos/flannel/blob/v0.13.0/README.md
(1)在线下载的形式配置,下载网络插件配置(Kubernetes v1.7+ 以上)
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
(2)如果上述方法遇到如下如问题
解决的方法是,浏览器直接打开上面的链接下载这份 yml
文件,然后手上传到服务器,最后移动到 /opt/cni/bin
,进入该目录执行
$ kubectl apply -f kube-flannel.yml
安装了以后就能查看了 flannel
已经跑起来了
# 查看状态 【kube-system是k8s中的最小单元】
kubectl get pods -n kube-system
节点的状态也已经变成了 Ready
五、部署一个Pod测试集群
#先安装一下Ngnix依赖的一个包,不安装Ngnix会报错起不来
$ yum install python-rhsm-certificates
#创建一个pod跑个ngnix
$ kubectl create deployment nginx --image=nginx
#暴露端口
$ kubectl expose deployment nginx --port=80 --type=NodePort
#查看一下对外的端口
$ kubectl get pod,svc
最后在我们的主机上访问一下试试