文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

CKAD认证中部署k8s并配置Calico插件

2024-04-02 19:55

关注

预设网络

Calico(https://github.com/projectcalico/calico) 是针对容器、虚拟机和裸机工作负载的开源网络和安全解决方案,它提供了 pod 之间的网络连接和网络安全策略实施。

读者可参考 https://kubernetes.io/zh/docs/concepts/cluster-administration/networking/ 这里不做过多的说明。

执行 ip addr 命令,找到 ens4,把里面提到的 ip 记录下来。

ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP group default qlen 1000
    link/ether 42:01:0a:aa:00:02 brd ff:ff:ff:ff:ff:ff
    inet 10.170.0.2/32 scope global dynamic ens4
       valid_lft 2645sec preferred_lft 2645sec
    inet6 fe80::4001:aff:feaa:2/64 scope link 
       valid_lft forever preferred_lft forever

则 ip 是 10.170.0.2。

然后修改 /etc/hosts 文件,加上一行(替换这个ip为你的):

10.170.0.2      k8smaster

后面我们访问集群,使用 k8smaster,而且不是使用 ip 直接访问。

kubeadm 安装 k8s

执行 kubectl version 查看 k8s 版本,GitVersion:"v1.21.0" 表示的即为 k8s 版本,因为工具版本跟 k8s 版本一致。

创建一个 kubeadm-config.yaml 文件,我们使用 kubeadm init 时,通过此配置文件出初始化 k8s master。

文件内容为:

apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubenetesVersion: 1.21.0
controlPlaneEndpoint: "k8smaster:6443"
networking:
    podSubnet: 192.168.0.0/16

注意,: 后面必须带一个空格。表示key: value

例如 image: nginx:letest ,不带空格的 : 会连在一起。

然后初始化 master:

kubeadm init --config=kubeadm-config.yaml --upload-certs --v=5 | tee kubeadm-init.out

这个语句可以省略为 kubeadm init --config=kubeadm-config.yaml --upload-certs

--v=5 可以输出更多信息信息,tee xxx 可以让信息输出到一个文件中,方便收集日志或者后续检查。

执行初始化命令后,终端或查看 kubeadm-init.out 文件,有以下内容:

To start using your cluster, you need to run the following as a regular user:

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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of the control-plane node running the following command on each as root:

  kubeadm join k8smaster:6443 --token 45td1j.xqdscm4k06a4edi2 \
	--discovery-token-ca-cert-hash sha256:aeb772c57a35a283716b65d16744a71250bcc25d624010ccb89090021ca0f428 \
	--control-plane --certificate-key d76287ccc4701db9d34e0c9302fa285be2e9241fc43c94217d6beb419cdf3c52

Please note that the certificate-key gives access to cluster sensitive data, keep it secret!
As a safeguard, uploaded-certs will be deleted in two hours; If necessary, you can use
"kubeadm init phase upload-certs --upload-certs" to reload certs afterward.

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join k8smaster:6443 --token 45td1j.xqdscm4k06a4edi2 \
	--discovery-token-ca-cert-hash sha256:aeb772c57a35a283716b65d16744a71250bcc25d624010ccb89090021ca0f428 

按照提示,我们执行:

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

然后:

export KUBECONFIG=/etc/kubernetes/admin.conf

笔者注:KUBECONFIG 环境变量在下次登录或新建终端窗口会失效,打开 用户目录的.bashrc 文件,在最后面加上 export KUBECONFIG=/etc/kubernetes/admin.conf ,可保证下次登录或切换终端,依然可用。

笔者注:因为涉及到多用户,所以如果切换用户,就不能使用 kubeadm/kubectl/kubelet 命令了,如果读者切换了用户,则可以执行上面 make -p $HOME/.kube到 export xxx 这两部分的命令,这样别的用户也可以执行命令操作节点。

输入 kubeadm config print init-default 可以查看到 master 是初始化的配置。

配置 calico

然后下下载 calico 的 yaml 文件。

wget https://docs.projectcalico.org/manifests/calico.yaml

然后我们需要留意 yaml 文件中的 CALICO_IPV4POOL_CIDR 的值,读者直接打开 https://docs.projectcalico.org/manifests/calico.yaml 或者使用 less calico.yaml 在终端上阅读文件。

找到 CALICO_IPV4POOL_CIDR 例如:

         # - name: CALICO_IPV4POOL_CIDR
            #   value: "192.168.0.0/16"

这个表示 ip4 池,如果 ip 不存在,则会自动创建,创建 的 pod 的网络 ip 会在这个范围。默认是 192.168.0.0 我们不需要改,如果你需要定制,则可以删除 # ,然后改动 ip。

然后我们启用 calico 网络插件:

kubectl apply -f calico.yaml

自动补全工具

kubectl 命令和可选参数非常多,每次都要敲长长的命令,任意出错,我们可以利用 bash-completion 为我们快速完成命令的输入。

sudo apt-get install bash-completion -y
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> $HOME/.bash

我们可以测试一下。

输入 kubectl des ,然后按一下 TAB 键,会发现内容自动补全。

输入完整的 kubectl descibe nodes 可以查到 node 状态,后面的小节再聊聊 descibe nodes 的含义。

状态描述

执行 kubectl descibe nodes 命令,我们可以看到节点详细的信息,其中有个 Conitions 字段,描述了所有正在运行中(Running) 的节点的状态,它有 5 个类型:

使用 json 表示:

"conditions": [
  {
    "type": "Ready",
    "status": "True",
    "reason": "KubeletReady",
    "message": "kubelet is posting ready status",
    "lastHeartbeatTime": "2019-06-05T18:38:35Z",
    "lastTransitionTime": "2019-06-05T11:41:27Z"
  }
]

到此这篇关于CKAD认证中部署k8s并配置Calico插件的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯