Kubernetes 部署

1. 安装方式

  • kubeadm
    kubeadm是官⽅社区推出的⼀个⽤于快速部署kubernetes集群的⼯具。
    这个⼯具能通过两条指令完成⼀个kubernetes集群的部署:
# 创建⼀个 Master 节点
$ kubeadm init
# 将⼀个 Node 节点加⼊到当前集群中
$ kubeadm join <Master节点的IP和端⼝>

官方地址:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

  • 二进制包
    从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。

2. 安装要求

  • ⾄少3台机器,操作系统 CentOS7+
  • 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘20GB或更多
  • 集群中所有机器之间⽹络互通
  • 可以访问外⽹,需要拉取镜像
  • 禁⽌swap分区

环境说明

角色系统IP所需组件
k8s-mastercentos 8192.168.249.141docker
kubeadm
kubelet
kubectl
k8s-node1centos 8192.168.249.145docker
kubeadm
kubelet
kubectl
k8s-node2centos 8192.168.249.147docker
kubeadm
kubelet
kubectl
//所有主机关闭防火墙和selinux
# systemctl disable --now firewalld
# sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久

//关闭swap分区
# swapoff -a  # 临时
# sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久

//修改主机名
hostnamectl set-hostname <hostname>
//添加hosts
cat >> /etc/hosts << EOF
192.168.249.141 k8s-master master.example.com
192.168.249.145 k8s-node1 node1.example.com
192.168.249.147 k8s-node2 node2.example.com
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 -y install chrony
# systemctl enable --now chronyd

//设置免密登录
# ssh-keygen -t rsa
# ssh-copy-id k8s-master
# ssh-copy-id k8s-node1
# ssh-copy-id k8s-node2

//重启使配置生效
# reboot

3. 所有节点安装Docker/kubeadm/kubelet

Kubernetes默认CRI(容器运⾏时)为Docker,因此先安装Docker。

3.1 安装Docker

# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
# yum -y install docker-ce
#  cat > /etc/docker/daemon.json <<EOF
> {
>    "registry-mirrors": ["https://1gnt5vnf.mirror.aliyuncs.com"]
> }
> EOF

# systemctl enable --now docker

3.2 配置 kubernetes 阿里云yum源

# vim /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
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

3.3 安装kubeadm,kubelet和kubectl

由于版本更新频繁,这⾥指定版本号部署

# yum -y install kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0
# systemctl enable kubelet

4. 部署 k8s-master

# kubeadm init \
--apiserver-advertise-address=192.168.249.141 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.20.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16

如果执行上面命令也就是初始化第一遍没有成功,再次执行则会报错,需要先执行以下命令。

# kubeadm reset

由于默认拉取镜像地址k8s.gcr.io国内⽆法访问,这⾥指定阿⾥云镜像仓库地址。
使⽤kubectl⼯具:

# 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
NAME                     STATUS     ROLES                  AGE     VERSION
k8s-master.example.com   NotReady   control-plane,master   6m37s   v1.20.0

5. 安装Pod⽹络插件(CNI)

# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

确保能够访问到 quay.io 这个registery

6. 部署 k8s-node1 k8s-node2

向集群添加新节点,执⾏在 kubeadm init 输出的 kubeadm join 命令:

# kubeadm join 192.168.249.141:6443 --token e45amd.ixsq8wvk0hy0cama \
    --discovery-token-ca-cert-hash sha256:0e976cb17f8a119ac0a2ca292ebf25041c3164c7e551afbd99c8611ca8e8c9f7 

7. 测试 kubernetes 集群

# kubectl create deployment nginx --image=nginx
# kubectl expose deployment nginx --port=80 --type=NodePort
# kubectl get pod,svc
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-6799fc88d8-jgk25   1/1     Running   0          10h

NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        10h
service/nginx        NodePort    10.102.195.230   <none>        80:31410/TCP   10h

访问
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值