Kubeadm部署k8s单点master

1、环境准备:

主机名 IP 说明 宿主机系统
master 10.0.0.17 Kubernetes集群的master节点 CentOS 7.9
node1 10.0.0.27 Kubernetes集群的node节点 CentOS 7.9
 # 所有master和node节点执行:
 ​
 # 关闭防火墙、iptables和selinux
 systemctl stop firewalld && systemctl disable firewalld
 setenforce 0
 sed -i 's/enforcing/disabled/' /etc/selinux/config
 ​
 # 禁用swap
 vim /etc/fstab
 swapoff -a
 ​
 # 主机名互相解析
 hostnamectl set-hostname master
 vim /etc/hosts
 10.0.0.27 node
 10.0.0.17 master
 ​
 # 时间同步
 yum install -y chrony
 systemctl enable --now chronyd
 ​
 # 添加网桥过滤和地址转发功能
 yum install -y bridge-utils
 modprobe br_netfilter
 cat > /etc/sysctl.d/kubernetes.conf <<EOF
 net.bridge.bridge-nf-call-arptables = 1
 net.bridge.bridge-nf-call-ip6tables = 1
 net.ipv4.ip_forward = 1
 user.max_user_namespaces=28633
 EOF
 sysctl -p /etc/sysctl.d/kubernetes.conf
 ​

2、安装docker

 # 所有节点执行:
 yum install -y yum-utils device-mapper-persistent-data lvm2
 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 yum install docker-ce
 ​
 # 配置镜像加速器、使用 systemd 来管理容器的 cgroup
 mkdir -p /etc/docker
 cat <<EOF > /etc/docker/daemon.json
 {
     "exec-opts": ["native.cgroupdriver=systemd"],
     "log-driver": "json-file",
     "log-opts": {
         "max-size": "100m"
    },
     "storage-driver": "overlay2",
     "storage-opts": [
         "overlay2.override_kernel_check=true"
    ],
     "experimental": false,
     "debug": false,
     "max-concurrent-downloads": 10,
     "registry-mirrors": ["https://pgavrk5n.mirror.aliyuncs.com"]
 }
 EOF
 systemctl enable docker && systemctl start docker && systemctl status docker

3、切换k8s国内源

 # 所有节点执行:
 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
 yum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0    

4、安装指定版本kubeadm、kubelet、kubectl

 # 所有节点执行:
 # 建议不要安装最新版本,因为最新版本很多组件不兼容,造成安装报错。
 yum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
 ​
 # 设置kubelet开机启动
 systemctl enable kubelet

5、初始化K8S

 # master节点:
 kubeadm init   --apiserver-advertise-address=10.0.0.17   --image-repository registry.aliyuncs.com/google_containers   --kubernetes-version v1.23.0   --service-cidr=10.96.0.0/12   --pod-network-cidr=10.244.0.0/16   --ignore-preflight-errors=all
 ​
 # 说明:
 –apiserver-advertise-address #集群通告地址(master机器IP)
 –image-repository   #由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
 –kubernetes-version            #K8s版本,与上面安装的一致
 –service-cidr                       #集群内部虚拟网络,Pod统一访问入口
 –pod-network-cidr                   #Pod网络,与下面部署的CNI网络组件yaml中保持一致

 # master节点执行:
 ​
 # 创建必要文件
   mkdir -p $HOME/.kube
   sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
   sudo chown $(id -u):$(id -g) $HOME/.kube/config
 ​

6、node节点加入集群

 # 所有node节点执行:
 ​
 # 执行初始化生成的join 命令:
 kubeadm join 10.0.0.17:6443 --token fnpbrc.e5s4jqrx8na4cpo9 \
  --discovery-token-ca-cert-hash sha256:5ecaba93c59504941137c963584e81643c6b50ecda6c2c1f4a4f60ca8cd9a7a0
 ​
 # 提示"kubectl get nodes",表示加入集群成功,可在master节点使用此命令查看node信息
 ​
 # 如果忘记或者token过期(默认有效期24小时)需要执行以下命令:
 kubeadm token create --print-join-command

7、部署网络

 # master节点执行:
 ​
 # 下载calico YAML文件
 wget https://docs.projectcalico.org/manifests/calico.yaml
 ​
 #修改Pod网络(CALICO_IPV4POOL_CIDR),与前面kubeadm init的–pod-network-cidr指定的一样(大概4551行左右)
 vim calico.yaml
 ......
 # no effect. This should fall within `--cluster-cidr`.
  - name: CALICO_IPV4POOL_CIDR            #取消注释
    value: "10.244.0.0/16"                #取消注释,修改为初始化–pod-network-cidr指定的地址
 # Disable file logging so `kubectl logs` works.
 ......
 ​
 ​
 kubectl apply -f calico.yaml
 ​
 # 稍等片刻,查看节点状态:
 [root@master ~]# kubectl get nodes
 NAME     STATUS   ROLES                 AGE   VERSION
 master   Ready   control-plane,master   49m   v1.23.0
 node     Ready   <none>                 14m   v1.23.0
 ​
 # 查看通信状态
 kubectl get pods -n kube-system

8、部署nginx测试

 #创建一个yaml文件
 ​
 [root@master ~]# vim nginx.yml
 apiVersion: apps/v1
 kind: Deployment
 metadata:
  name: nginx-deployment
  labels:
    app: nginx
    rel: stable
 spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
      rel: stable
  template:
    metadata:
      labels:
        app: nginx
        rel: stable
    spec:
      containers:
       - name: nginx
        image: nginx
         
 [root@master ~]# kubectl apply -f nginx.yml
 #再创建一个yaml文件:
 ​
 [root@master ~]# vim nginx-service.yml
 apiVersion: v1
 kind: Service
 metadata:
  name: nginx-service
 spec:
  selector:
    app: nginx
  type: NodePort
  ports:
     - protocol: TCP
      port: 80
      targetPort: 80
 ​
 [root@master ~]# kubectl apply -f nginx-service.yml
 #查看服务 (Running说明启动成功)
 [root@master ~]# kubectl get pod,svc
 NAME                                   READY   STATUS   RESTARTS   AGE
 pod/nginx-deployment-749d94b5db-64lm7   1/1     Running   0         8m20s
 pod/nginx-deployment-749d94b5db-j522z   1/1     Running   0         8m20s
 pod/nginx-deployment-749d94b5db-jjwjr   1/1     Running   0         8m20s
 ​
 NAME                   TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)       AGE
 service/kubernetes     ClusterIP   10.96.0.1     <none>        443/TCP       63m
 service/nginx-service   NodePort    10.98.54.199   <none>        80:32378/TCP   4m35s
 ​
 # 浏览器打开10.0.0.17:32378就可以看到nginx页面了(端口32378是上边命令查询出来的)

最新文章

  1. Idea在src下不能编译XML文件
  2. sublime 配置jade高亮显示
  3. ios基础操作
  4. 命令行构建Unity项目
  5. BZOJ3442: 学习小组
  6. 使用WinINet和WinHTTP实现Http访问
  7. dpkg ---- apt-get ------ aptitude 三种方式的区别 及命令格式
  8. Linux学习笔记(一)
  9. esc安装数据库 sqlserver mssql
  10. 树--四分树(UVa297)
  11. Windows组策略同步问题
  12. iOS开发--轮播图
  13. tomcat启动正常,404. Eclipse没有正确部署工程项目
  14. Java 之文件IO编程 之写入
  15. Thinkphp 框架基础
  16. C++—引用的作用
  17. *C语言有关指针的变量声明中的几个易错点
  18. Oracle-14:PLSQL
  19. Centos7 IPv6 Route And Dhcpv6 Server(借鉴补充)
  20. 第34章 授予类型 - Identity Server 4 中文文档(v1.0.0)

热门文章

  1. Java核心知识体系4:AOP原理和切面应用
  2. Windows 系统 PostgreSQL 手工安装配置方法
  3. 校园网跨网段共享文件Samba+SSH
  4. 【读书笔记】C#高级编程 第五章 泛型
  5. VLDB&#39;22 HiEngine极致RTO论文解读
  6. 02-MyBatisPlus入门
  7. 天天写SQL,这些神奇的特性你知道吗?
  8. 一文了解 Java 中的构造器
  9. DFS文件夹无法访问
  10. HK32F030MF4P6的Linux GCC工具链和VSCode开发环境