kubernetesk8s使用教程 (一键使用kubeadm搭建k8s集群)

基础环境初始化参考以下链接

https://www.toutiao.com/article/7084871178619208228/

一、安装docker、kubeadm、kubelet、kubectl程序(三台主机都需要安装)

1.docker程序安装

#安装yum-utils软件用于提供yum-config-manager程序
[root@master1 ~]# yum install -y yum-utils
#使用yum-config-manager创建docker存储库(阿里)
[root@master1 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#查看当前镜像源中支持的docker版本
[root@master1 ~]# yum list docker-ce --showduplicates
docker-ce-18.06.3.ce-3.el7 #该版本为特定版
#安装特定版docker-ce,安装时需要使用--setopt=obsoletes=0参数指定版本,否则yum会自动安装高版本
[root@master1 ~]# yum -y install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7
#查看docker版本信息
[root@master1 ~]# docker --version
#创建/etc/docker目录,并在/etc/docker目录下添加一个配置文件
[root@master1 ~]# mkdir /etc/docker
#Docker默认使用的Cgroup Driver为默认文件驱动,而k8s默认使用的文件驱动为systemd,k8s要求驱
动类型必须要一致,所以需要将docker文件驱动改成systemd
[root@master1 ~]# cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": ["https://es6lx7cc.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
#启动docker程序
[root@master1 ~]# systemctl start docker
#设置docker随机自启
[root@master1 ~]# systemctl enable docker

2.安装kubernetes程序

#创建阿里kubernetes仓库
[root@master1 ~]# cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF
#安装kubeadm、kubelet、kubectl程序
[root@master1 ~]# yum -y install --setopt=obsoletes=0 kubeadm-1.19.16-0 kubelet-1.19.16-0 kubectl-1.19.16-0
#配置kubelet的cgroup,编辑/etc/sysconfig/kubelet文件
[root@master1 ~]# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
KUBELET_PROXY_MODE="ipvs"
#设置kubelet随机自启
[root@master1 ~]# systemctl enable kubelet

3.*载下**集群镜像

#在安装kubernetes集群前,必须要准备好集群需要的镜像,所需的镜像可以通过下面命令查看
[root@master1 ~]# kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.19.16
k8s.gcr.io/kube-controller-manager:v1.19.16
k8s.gcr.io/kube-scheduler:v1.19.16
k8s.gcr.io/kube-proxy:v1.19.16
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.13-0
k8s.gcr.io/coredns:1.7.0
#定义镜像列表,应为此镜像在kubernetes仓库中,由于网络原因无法*载下**
[root@master1 ~]# images=(
kube-apiserver:v1.19.16
kube-controller-manager:v1.19.16
kube-scheduler:v1.19.16
kube-proxy:v1.19.16
pause:3.2
etcd:3.4.13-0
coredns:1.7.0
)
#从阿里镜像仓库*载下**镜像
[root@master1 ~]# for imageName in ${images[@]};do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
k8s.gcr.io/$imageName
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done
#查看镜像(标签以变成k8s标签)
[root@master1 ~]# docker images
REPOSITORY
k8s.gcr.io/kube-proxy
k8s.gcr.io/kube-scheduler
k8s.gcr.io/kube-apiserver
k8s.gcr.io/kube-controller-manager
k8s.gcr.io/coredns
k8s.gcr.io/etcd
k8s.gcr.io/pause

4.kubernetes集群初始化

Master节点创建集群(该操作只在master主机执行)

[root@master1 ~]# kubeadm init \
--kubernetes-version=v1.19.16 \
--pod-network-cidr=10.244.0.0/16 \
--service-cidr=10.96.0.0/12 \
--apiserver-advertise-address=172.16.102.11
#--pod-network-cidr 参数使用10.244.0.0/16,是因为选择了flannel组件,如果选其他组件,该参数要做相应的改变;
#--service-cidr 参数为service的虚拟IP地址另外指定IP地址段;
#出现 Your Kubernetes master has initialized successfully! 信息且没有ERROR信息,则初始化成功
[root@master1 ~]# mkdir -p $HOME/.kube
[root@master1 ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master1 ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
#使普通用户使用kubectl (在初始化集群时的打印信息中含有,配置kubeconfig路径):
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
$ sudo chmod 666 /etc/kubernetes/admin.conf

5.node节点加入集群

[root@node1 ~]# kubeadm join 172.16.102.11:6443 --token cod9jx.5gnmixcwr282pwvz \
    --discovery-token-ca-cert-hash sha256:42c52beff870af1d9519e989aaf425db6ea0f33a2eb60f1360aa0ffa409eecfb 
[root@node2 ~]# kubeadm join 172.16.102.11:6443 --token cod9jx.5gnmixcwr282pwvz \
    --discovery-token-ca-cert-hash sha256:42c52beff870af1d9519e989aaf425db6ea0f33a2eb60f1360aa0ffa409eecfb 

6.master节点查看node节点信息

[root@master1 ~]# kubectl get nodes
NAME   STATUS   ROLES  AGE   VERSION
master Ready master 9m1s  v1.19.16
node1  Ready <none> 3m26s v1.19.16
node2  Ready <none> 5s    v1.19.16
提示:如果哪个节点出现问题,可以使用下列命令重置当前节点
kubeadm reset

至此集群环境部署完毕