centos7.9单机版安装K8s

打印 上一主题 下一主题

主题 1783|帖子 1783|积分 5349

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.安装docker

  1. [root@localhost ~]# hostnamectl set-hostname master
  2. [root@localhost ~]# bash
  3. [root@master ~]# mv /etc/yum.repos.d/* /home  
  4. [root@master ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  5. [root@master ~]# curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
  6. [root@master ~]# systemctl enable docker --now
  7. Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
  8. [root@master ~]# cat /etc/docker/daemon.json
  9. {
  10. "exec-opts":["native.cgroupdriver=systemd"]
  11. }
  12. [root@master ~]# systemctl daemon-reload &&systemctl restart docker
复制代码
2.体系调优

  1. #关闭防火墙、设置selinux
  2. [root@master ~]# systemctl stop firewalld&&systemctl disable firewalld&&setenforce 0
  3. [root@master ~]# vim /etc/selinux/config
  4. SELINUX=disabled
  5. #关闭交换分区
  6. [root@master ~]# swapoff -a
  7. [root@master ~]# vim /etc/fstab
  8. #/dev/mapper/centos-swap swap                    swap    defaults        0 0
  9. #配置主机名解析
  10. [root@master ~]# vim /etc/hosts
  11. 192.168.1.99 master
  12. #转发IPv4并让iptables看到桥接流量
  13. cat >/etc/modules-load.d/k8s.conf <<EOF
  14. overlay
  15. br_netfilter
  16. EOF
  17. modprobe overlay
  18. modprobe br_netfilter
  19. cat >/etc/sysctl.d/k8s.conf <<EOF
  20. net.bridge.bridge-nf-call-iptables=1
  21. net.bridge.bridge-nf-call-ip6tables=1
  22. net.ipv4.ip_forward=1
  23. EOF
  24. sysctl --system
复制代码
3.安装cri-docker

  1. 下载cri-docker,安装容器进行时
  2. [root@master ~]# yum install -y wget
  3. 这里国内下载失败,建议挂梯子下载到本地进行上传
  4. [root@master ~]# wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.15/cri-dockerd-0.3.15.amd64.tgz
  5. [root@master ~]# tar zxvf cri-dockerd-0.3.15.amd64.tgz
  6. ockerd
  7. [root@master ~]# mv cri-dockerd/cri-dockerd /usr/bin/
  8. 配置服务文件
  9. [root@master ~]# cat /usr/lib/systemd/system/cri-docker.service
  10. [Unit]
  11. Description=CRI Interface for Docker Application Container Engine
  12. Documentation=https://docs.mirantis.com
  13. After=network-online.target firewalld.service docker.service
  14. Wants=network-online.target
  15. Requires=cri-docker.socket
  16. [Service]
  17. Type=notify
  18. ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.10
  19. ExecReload=/bin/kill -s HUP $MAINPID
  20. TimeoutSec=0
  21. RestartSec=2
  22. Restart=always
  23. StartLimitBurst=3
  24. StartLimitInterval=60s
  25. LimitNOFILE=infinity
  26. LimitNPROC=infinity
  27. LimitCORE=infinity
  28. TasksMax=infinity
  29. Delegate=yes
  30. KillMode=process
  31. [Install]
  32. WantedBy=multi-user.target
  33. [root@master ~]# cat /usr/lib/systemd/system/cri-docker.socket
  34. [Unit]
  35. Description=CRI Docker Socket for the API
  36. PartOf=cri-docker.service
  37. [Socket]
  38. ListenStream=%t/cri-dockerd.sock
  39. SocketMode=0660
  40. SocketUser=root
  41. SocketGroup=docker
  42. [Install]
  43. WantedBy=sockets.target
  44. [root@master ~]# systemctl daemon-reload
  45. [root@master ~]# systemctl enable  cri-docker --now &&systemctl status cri-docker
复制代码
4.配置containerd

  1. [root@master ~]# containerd config default > /etc/containerd/config.toml
  2. [root@master ~]# vim /etc/containerd/config.toml
  3. SystemdCgroup = true
  4. [root@master ~]# systemctl restart containerd&&systemctl enable containerd
  5. Created symlink from /etc/systemd/system/multi-user.target.wants/containerd.service to /usr/lib/systemd/system/containerd.service.
复制代码
5.配置k8s yum堆栈
 


  1. cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
  2. [kubernetes]
  3. name=Kubernetes
  4. baseurl=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/
  5. enabled=1
  6. gpgcheck=1
  7. gpgkey=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/repodata/repomd.xml.key
  8. exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
  9. EOF
  10. sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
  11. sudo systemctl enable --now kubelet
复制代码
6.初始化K8s集群

  1. [root@master ~]# kubeadm config print init-defaults  > kubeadm-config.yaml
  2. [root@master ~]# vim kubeadm-config.yaml
  3. apiVersion: kubeadm.k8s.io/v1beta4
  4. bootstrapTokens:
  5. - groups:
  6.   - system:bootstrappers:kubeadm:default-node-token
  7.   token: abcdef.0123456789abcdef
  8.   ttl: 24h0m0s
  9.   usages:
  10.   - signing
  11.   - authentication
  12. kind: InitConfiguration
  13. localAPIEndpoint:
  14.   advertiseAddress: 192.168.1.99
  15.   bindPort: 6443
  16. nodeRegistration:
  17.   criSocket: unix:///var/run/cri-dockerd.sock
  18.   imagePullPolicy: IfNotPresent
  19.   imagePullSerial: true
  20.   name: master
  21.   taints: null
  22. timeouts:
  23.   controlPlaneComponentHealthCheck: 4m0s
  24.   discovery: 5m0s
  25.   etcdAPICall: 2m0s
  26.   kubeletHealthCheck: 4m0s
  27.   kubernetesAPICall: 1m0s
  28.   tlsBootstrap: 5m0s
  29.   upgradeManifests: 5m0s
  30. ---
  31. apiServer: {}
  32. apiVersion: kubeadm.k8s.io/v1beta4
  33. caCertificateValidityPeriod: 87600h0m0s
  34. certificateValidityPeriod: 8760h0m0s
  35. certificatesDir: /etc/kubernetes/pki
  36. clusterName: kubernetes
  37. controllerManager: {}
  38. dns: {}
  39. encryptionAlgorithm: RSA-2048
  40. etcd:
  41.   local:
  42.     dataDir: /var/lib/etcd
  43. imageRepository: registry.aliyuncs.com/google_containers
  44. kind: ClusterConfiguration
  45. kubernetesVersion: 1.31.0
  46. networking:
  47.   dnsDomain: cluster.local
  48.   serviceSubnet: 10.96.0.0/12
  49. proxy: {}
  50. scheduler: {}
  51. [root@master ~]# vim kubeadm-config.yaml
  52. 新增
  53. kind: KubeletConfiguration
  54. apiVersion: kubelet.config.k8s.io/v1beta1
  55. cgroupDriver: "systemd"
  56. [root@master ~]# systemctl restart kubelet
  57. 编辑 /etc/default/grub 文件,添加 systemd.unified_cgroup_hierarchy=0 到 GRUB_CMDLINE_LINUX 行
  58. [root@master ~]# bash
  59. [root@master ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
  60. Generating grub configuration file ...
  61. Found linux image: /boot/vmlinuz-3.10.0-1160.el7.x86_64
  62. Found initrd image: /boot/initramfs-3.10.0-1160.el7.x86_64.img
  63. Found linux image: /boot/vmlinuz-0-rescue-fb69d0cc8cb44f40959b8de6635f63a0
  64. Found initrd image: /boot/initramfs-0-rescue-fb69d0cc8cb44f40959b8de6635f63a0.img
  65. done
  66. [root@master ~]# reboot
  67. [root@master ~]# systemctl restart containerd
  68. [root@master ~]# systemctl restart kubelet
  69. [root@master ~]# kubeadm init --config  kubeadm-config.yaml
  70. Your Kubernetes control-plane has initialized successfully!
  71. To start using your cluster, you need to run the following as a regular user:
  72.   mkdir -p $HOME/.kube
  73.   sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  74.   sudo chown $(id -u):$(id -g) $HOME/.kube/config
  75. Alternatively, if you are the root user, you can run:
  76.   export KUBECONFIG=/etc/kubernetes/admin.conf
  77. You should now deploy a pod network to the cluster.
  78. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  79.   https://kubernetes.io/docs/concepts/cluster-administration/addons/
  80. Then you can join any number of worker nodes by running the following on each as root:
  81. kubeadm join 192.168.1.99:6443 --token abcdef.0123456789abcdef \
  82.         --discovery-token-ca-cert-hash sha256:a6ecf61ca34fe2994e17708179990c210ecb954c0a96b4386bd85934f123d43d
  83. [root@master ~]#   mkdir -p $HOME/.kube
  84. [root@master ~]#   sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  85. [root@master ~]#   sudo chown $(id -u):$(id -g) $HOME/.kube/config
  86. [root@master ~]# kubectl get nodes
  87. NAME     STATUS     ROLES           AGE   VERSION
  88. master   NotReady   control-plane   36s   v1.31.2
复制代码
7.安装网络插件

  1. [root@master ~]# cat /etc/docker/daemon.json
  2. {
  3. "exec-opts":["native.cgroupdriver=systemd"],
  4. "registry-mirrors": [
  5.             "https://docker.unsee.tech",
  6.         "https://dockerpull.org",
  7.         "https://docker.1panel.live",
  8.         "https://dockerhub.icu"
  9.     ]
  10. }
  11. [root@master ~]# systemctl daemon-reload &&systemctl restart docker
  12. [root@master ~]# docker pull docker.io/calico/cni:master
  13. [root@master ~]# docker pull docker.io/calico/node:master
  14. [root@master ~]# docker pull docker.io/calico/kube-controllers:master
  15. [root@master ~]# curl -o calico.yaml  https://github.com/projectcalico/calico/blob/master/manifests/calico.yaml
  16. [root@master ~]# kubectl apply -f calico.yaml
  17. [root@master ~]# kubectl get  pods -n kube-system
  18. NAME                                       READY   STATUS    RESTARTS       AGE
  19. calico-kube-controllers-7bcf789c97-vszz9   1/1     Running   0              24s
  20. calico-node-cvspq                          1/1     Running   0              24s
  21. coredns-855c4dd65d-c6mrt                   1/1     Running   0              24m
  22. coredns-855c4dd65d-jdxjb                   1/1     Running   0              24m
  23. etcd-master                                1/1     Running   1 (14m ago)    24m
  24. kube-apiserver-master                      1/1     Running   1 (14m ago)    24m
  25. kube-controller-manager-master             1/1     Running   2 (2m2s ago)   24m
  26. kube-proxy-ll54k                           1/1     Running   1 (14m ago)    24m
  27. kube-scheduler-master                      1/1     Running   1 (14m ago)    24m
  28. [root@master ~]# kubectl get nodes
  29. NAME     STATUS   ROLES           AGE   VERSION
  30. master   Ready    control-plane   25m   v1.31.2
复制代码
8.k8s下令补全

  1. [root@master ~]# yum -y install bash-completion
  2. [root@master ~]# source /usr/share/bash-completion/bash_completion
  3. [root@master ~]# source <(kubectl completion bash)
  4. [root@master ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc
  5. [root@master ~]# kubectl
  6. annotate       (更新一个资源的注解)                                                                                   explain        (Get documentation for a resource)
  7. api-resources  (Print the supported API resources on the server)                                                      expose         (Take a replication controller, service, deployment or pod and expose it as a new Kubernetes service)
  8. api-versions   (Print the supported API versions on the server, in the form of "group/version")                       get            (显示一个或多个资源)
  9. apply          (Apply a configuration to a resource by file name or stdin)                                            help           (Help about any command)
  10. attach         (挂接到一个运行中的容器)                                                                               kustomize      (Build a kustomization target from a directory or URL)
  11. auth           (Inspect authorization)                                                                                label          (更新某资源上的标签)
  12. autoscale      (Auto-scale a deployment, replica set, stateful set, or replication controller)                        logs           (打印 Pod 中容器的日志)
  13. certificate    (Modify certificate resources)                                                                         options        (输出所有命令的层级关系)
  14. cluster-info   (Display cluster information)                                                                          patch          (Update fields of a resource)
  15. completion     (Output shell completion code for the specified shell (bash, zsh, fish, or powershell))                plugin         (Provides utilities for interacting with plugins)
  16. config         (修改 kubeconfig 文件)                                                                                 port-forward   (将一个或多个本地端口转发到某个 Pod)
  17. cordon         (标记节点为不可调度)                                                                                   proxy          (运行一个指向 Kubernetes API 服务器的代理)
  18. cp             (Copy files and directories to and from containers)                                                    replace        (Replace a resource by file name or stdin)
  19. create         (Create a resource from a file or from stdin)                                                          rollout        (Manage the rollout of a resource)
  20. debug          (Create debugging sessions for troubleshooting workloads and nodes)                                    run            (在集群上运行特定镜像)
  21. delete         (Delete resources by file names, stdin, resources and names, or by resources and label selector)       scale          (Set a new size for a deployment, replica set, or replication controller)
  22. describe       (显示特定资源或资源组的详细信息)                                                                       set            (为对象设置指定特性)
  23. diff           (Diff the live version against a would-be applied version)                                             taint          (更新一个或者多个节点上的污点)
  24. drain          (清空节点以准备维护)                                                                                   top            (Display resource (CPU/memory) usage)
  25. edit           (编辑服务器上的资源)                                                                                   uncordon       (标记节点为可调度)
  26. events         (List events)                                                                                          version        (输出客户端和服务端的版本信息)
  27. exec           (在某个容器中执行一个命令)                                                                             wait           (Experimental: Wait for a specific condition on one or many resources)
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南飓风

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表