小笔记-简单但够用系列_K8S 快速入门(二)-安装K8S

安装方法

minikube

有提供在线操作机器,可在线执行命令进行验证
https://kubernetes.io/docs/tutorials/hello-minikube/

kind

可部署本地的单机kubernetes
https://kind.sigs.k8s.io

kubeadm

当前较常用的方法,可通过 kubeadm init 和 kubeadm join 两个命令方便快捷的搭建k8s集群。
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

二进制

较为繁琐,适合离线环境下的安装,但需要对k8s较为熟悉,涉及较多服务及安装包。可从github下载发行版的二进制包
https://github.com/kubernetes/

yum

yum源在线安装k8s的各个组件,yum下载的版本较老,已很久未维护,用得较少。

环境要求

  • CentOS7.x
  • 2cpu 2mem
  • 集群机器之间通讯正常
  • 可访问外网,镜像仓库
  • 禁止使用swap分区

安装准备

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

关闭selinux

setenforce 0
vi /etc/selinux/config
SELINUX=disabled

添加hosts映射地址

cat /etc/hosts
192.168.139.131 master
192.168.139.132 node1
192.168.139.133 node2

网桥设置

创建/etc/sysctl.d/k8s.conf文件,添加如下内容:

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

执行命令使修改生效。

modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf

关闭 swap

关闭系统的Swap方法如下:


swapoff -a

修改 /etc/fstab 文件,注释掉 SWAP 的自动挂载,使用free -m确认swap已经关闭。

swappiness参数调整,修改/etc/sysctl.d/k8s.conf添加下面一行:

vm.swappiness=0

使修改生效。

sysctl -p /etc/sysctl.d/k8s.conf

时间同步(可选)

yum install ntpdate -y
ntpdate time.windows.com

安装k8s

安装docker

https://blog.csdn.net/NYTWTYN/article/details/119202934?spm=1001.2014.3001.5502

添加 k8s 的 阿里云 yun 源

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=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
        https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安装 kubeadm\kubelet\kubectl

yum install kubelet-1.19.4 kubeadm-1.19.4 kubectl-1.19.4 -y
systemctl enable kubelet.service

注册 master

kubeadm init --apiserver-advertise-address=192.168.139.131 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.19.4 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
    - service-cidr  服务通讯子网
    - pod-network-cidr  pod 网络

  mkdir -p $HOME/.kube 
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

添加 node

添加node的命令在master节点执行完 kubeadm init 命令后的输出打印获取

kubeadm join 192.168.139.131:6443 --token fmrnu0.31m6d4smn2999vek \
    --discovery-token-ca-cert-hash sha256:c628ef31874eb79adb8764a91c0438d24676e7c8040ff6d760804b2432332458

[root@master ~]# kubectl get nodes
NAME     STATUS     ROLES    AGE     VERSION
master   NotReady   master   6m30s   v1.19.4
node1    NotReady   <none>   20s     v1.19.4
node2    NotReady   <none>   28s     v1.19.4

删除node

如需从集群中移除node2,可执行以下步骤操作

1. 在master节点上执行:
kubectl drain k8s-node --delete-local-data --force --ignore-daemonsets
kubectl delete node k8s-node
2. 在node2上执行:
kubeadm reset
ifconfig cni0 down
ip link delete cni0
ifconfig flannel.1 down
ip link delete flannel.1
rm -rf /var/lib/cni/
3. 在node1上执行:
kubectl delete node node2

安装k8s网络插件

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

上述地址可能连接失败,可直接到github上找到 flannel 对应的项目,找到对应文件。
或自行创建 kube-flannel.yml 文件并写入以下内容
https://blog.csdn.net/NYTWTYN/article/details/118936440?spm=1001.2014.3001.5502

kubectl apply -f kube-flannel.yml

[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   84m   v1.19.4
node1    Ready    <none>   78m   v1.19.4
node2    Ready    <none>   78m   v1.19.4

配置kube-proxy开启ipvs

kubectl edit cm kube-proxy -n kube-system
编辑配置文件kube-system/kube-proxy中的config.conf,修改 mode:“ipvs”,保存后退出编辑
之后重启各个节点上的kube-proxy pod(一般在master节点执行即可)

kubectl get pod -n kube-system | grep kube-proxy | awk '{system("kubectl delete pod "$1" -n kube-system")}'
查看重新启动的kube-proxy信息
[root@master ~]# kubectl get pod -n kube-system | grep kube-proxy
kube-proxy-f9rnj                     1/1     Running   0          39s
kube-proxy-q6hks                     1/1     Running   0          44s
[root@master ~]# kubectl logs kube-proxy-f9rnj   -n kube-system
I0822 09:49:35.870937       1 server_others.go:170] Using ipvs Proxier.
W0822 09:49:35.871397       1 proxier.go:401] IPVS scheduler not specified, use rr by default
I0822 09:49:35.872146       1 server.go:534] Version: v1.15.3
日志中打印出了Using ipvs Proxier,说明ipvs模式已经开启。

测试-安装nginx服务

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
80为nginx容器内提供服务的端口,注意需要 STATUS为Running 状态时才可执行端口暴露命令,因Running状态才是完成的包括 镜像拉取,创建docker容器 等操作。
kubectl get pod,svc
获取容器80端口对应的主机端口

[root@master ~]# kubectl get pod,svc
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-6799fc88d8-shpkl   1/1     Running   0          110s

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        5h32m
service/nginx        NodePort    10.98.228.233   <none>        80:30274/TCP   3s


访问:http://NodeIP:Port 
NodeIP 为任意一个节点IP,master或node都可。

kubectl create deployment nginx --image=nginx --dry-run -o yaml >> nginx.yml
可不创建pod而生成一个yml文件,后续可通过这个yml文件创建pod。输出也支持json。
kubectl apply -f nginx.yml

安装DashBoard

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml
kubectl get pod -n kubernetes-dashboard

获取token

kubectl create serviceaccount dashboard-admin -n kube-system

kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
 
kubectl describe secrets -n kube-system $( kubectl -n kube-system get secrets |awk '/dashboard-admin/{print $1}')
后续如需再次获取token,只需执行第三条命令,建议保存为一个 sh 文件,方便后续执行。

通过 dashboard 的服务暴露端口,即可登录访问,注意使用 https ,登录的 token 获取请见上述步骤。

K8S 基础安装完成,可开始使用。

如需配置kubectl命令补全,可参照以下链接:
kubectl 命令补全配置

如需配置使用域名访问容器服务,可参照以下链接:
Ingress-nginx 安装使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值